This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Impressao\Almoxarifado;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Almoxarifado\SaidaItem;
|
||||
use App\Utils\Exports\Pdf1;
|
||||
use App\Utils\MaskUtil;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
class BaixaController extends Controller
|
||||
{
|
||||
private const TITLE = 'BAIXA';
|
||||
private const TEMPLATE = 'almoxarifado.baixa';
|
||||
|
||||
public static function getTemplate($id)
|
||||
{
|
||||
$saidaItem = SaidaItem::findOrFail($id);
|
||||
|
||||
$entradaItens = $saidaItem->entradaItens->map(fn ($entradaItem) => [
|
||||
'entrada_item_id' => $entradaItem->id,
|
||||
'quantidade_saida' => $entradaItem->pivotSaidaItemEntradaItem->quantidade_saida,
|
||||
'lote' => $entradaItem->lote,
|
||||
'validade_lote' => $entradaItem->validade_lote,
|
||||
]);
|
||||
|
||||
$semLote = collect();
|
||||
$comLote = collect();
|
||||
|
||||
collect($entradaItens)->each(function ($entrada) use ($semLote, $comLote) {
|
||||
|
||||
if (is_null($entrada['lote'])) {
|
||||
|
||||
$semLote->push($entrada);
|
||||
}
|
||||
else {
|
||||
|
||||
$comLote->push($entrada);
|
||||
}
|
||||
});
|
||||
|
||||
$possuiEntradaComLote = $comLote->isNotEmpty();
|
||||
|
||||
$semLote = $semLote
|
||||
->sortBy('entrada_item_id')
|
||||
->values();
|
||||
|
||||
$comLote = $comLote
|
||||
->sortBy([
|
||||
['validade_lote', 'asc'],
|
||||
['entrada_item_id', 'asc']
|
||||
])
|
||||
->values();
|
||||
|
||||
$entradaItens = $comLote->concat($semLote)->map(function ($entrada) {
|
||||
|
||||
if (!is_null($entrada['validade_lote'])) {
|
||||
|
||||
$entrada['validade_lote'] = $entrada['validade_lote']->format('d/m/Y');
|
||||
}
|
||||
|
||||
return $entrada;
|
||||
});
|
||||
|
||||
return [
|
||||
'data' => $saidaItem->saida->created_at->format('d/m/Y'),
|
||||
'unidade' => $saidaItem->createdCentroCusto->infraestrutura->unidade->nome_fantasia,
|
||||
'localAtendimento' => $saidaItem->createdCentroCusto->infraestrutura->nome,
|
||||
'setor' => $saidaItem->createdCentroCusto->setor->nome,
|
||||
'usuario' => $saidaItem->createdLotacao->usuario->cidadao->nome,
|
||||
'endereco' => $saidaItem->createdCentroCusto->infraestrutura->endereco->completo,
|
||||
'telefone' => MaskUtil::getPhoneMasked($saidaItem->createdCentroCusto->infraestrutura->telefone),
|
||||
'motivo' => $saidaItem->saida->baixa->motivo->descricao,
|
||||
'justificativa' => $saidaItem->saida->baixa->justificativa,
|
||||
'usuarioSolicitante' => $saidaItem->saida->baixa->usuarioSolicitante->cidadao->nome ?? null,
|
||||
'itens' => collect([
|
||||
[
|
||||
'material' => [
|
||||
'id' => $saidaItem->material->id,
|
||||
'descricao' => $saidaItem->material->descricao_completa,
|
||||
],
|
||||
'quantidade' => $saidaItem->quantidade,
|
||||
'possui_entrada_com_lote' => $possuiEntradaComLote,
|
||||
'entrada_itens' => $entradaItens,
|
||||
'estornado' => $saidaItem->estornado,
|
||||
]
|
||||
])->filter(fn ($i) => !$i['estornado'])->all()
|
||||
];
|
||||
}
|
||||
|
||||
public function __invoke($id)
|
||||
{
|
||||
return Pdf1::generate(self::TITLE, self::TEMPLATE, self::getTemplate($id));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Impressao\Almoxarifado;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Cadastro\Grupo\Grupo;
|
||||
use App\Models\Cadastro\Subgrupo\Subgrupo;
|
||||
use App\Services\Almoxarifado\BalanceteService;
|
||||
use App\Utils\Exports\Pdf1;
|
||||
use Carbon\Carbon;
|
||||
|
||||
class BalanceteController extends Controller
|
||||
{
|
||||
private const TITLE = 'BALANCETE';
|
||||
private const TEMPLATE = 'almoxarifado.balancete';
|
||||
|
||||
public static function getTemplate()
|
||||
{
|
||||
$periodo = [
|
||||
'inicio' => Carbon::createFromFormat('d/m/Y', request()->inicio)->setTime(0, 0, 0),
|
||||
'fim' => Carbon::createFromFormat('d/m/Y', request()->fim)->setTime(23, 59, 59),
|
||||
];
|
||||
|
||||
$grupo = request()->query('grupo_id') ? Grupo::find(request()->query('grupo_id')) : null;
|
||||
$subgrupo = request()->query('subgrupo_id') ? Subgrupo::find(request()->query('subgrupo_id')) : null;
|
||||
$colunas = collect(request()->selectedCols);
|
||||
|
||||
$balancete = BalanceteService::getBalancete($periodo, request()->grupo_id, request()->subgrupo_id, request()->origem_programatica_id);
|
||||
|
||||
BalanceteService::formatarSaldos($balancete);
|
||||
|
||||
$itens = null;
|
||||
|
||||
if ($colunas->contains('material')) {
|
||||
|
||||
$itens = $balancete['por_material'];
|
||||
}
|
||||
else if ($colunas->contains('subgrupo')) {
|
||||
|
||||
$itens = $balancete['por_subgrupo'];
|
||||
}
|
||||
else {
|
||||
|
||||
$itens = $balancete['por_grupo'];
|
||||
}
|
||||
|
||||
return [
|
||||
'inicio' => request()->inicio,
|
||||
'fim' => request()->fim,
|
||||
'grupo' => $grupo->nome ?? null,
|
||||
'subgrupo' => $subgrupo->nome ?? null,
|
||||
'colunas' => $colunas,
|
||||
'itens' => $itens,
|
||||
'totalizadores' => $balancete['totalizadores'],
|
||||
];
|
||||
}
|
||||
|
||||
public function __invoke()
|
||||
{
|
||||
return Pdf1::generate(self::TITLE, self::TEMPLATE, self::getTemplate());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Impressao\Almoxarifado;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Cadastro\Grupo\Grupo;
|
||||
use App\Models\Cadastro\Subgrupo\Subgrupo;
|
||||
use App\Models\Cadastro\SujeitoAtencao\Lotacao;
|
||||
use App\Services\Almoxarifado\InventarioService;
|
||||
use App\Utils\Exports\Pdf1;
|
||||
|
||||
class InventarioController extends Controller
|
||||
{
|
||||
private const TITLE = 'INVENTÁRIO';
|
||||
private const TEMPLATE = 'almoxarifado.inventario';
|
||||
|
||||
public static function getTemplate()
|
||||
{
|
||||
$grupo = request()->query('grupo_id') ? Grupo::find(request()->query('grupo_id')) : null;
|
||||
$subgrupo = request()->query('subgrupo_id') ? Subgrupo::find(request()->query('subgrupo_id')) : null;
|
||||
|
||||
return [
|
||||
'localAtendimento' => Lotacao::findOrFail(auth()->payload()->get('lotacao_id'))->infraestrutura->nome,
|
||||
'grupo' => $grupo->nome ?? null,
|
||||
'subgrupo' => $subgrupo->nome ?? null,
|
||||
'materiais' => InventarioService::index()
|
||||
];
|
||||
}
|
||||
|
||||
public function __invoke()
|
||||
{
|
||||
return Pdf1::generate(self::TITLE, self::TEMPLATE, self::getTemplate());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Impressao\Almoxarifado\Relatorios;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Services\Almoxarifado\Relatorios\ConsumoFinanceiroService;
|
||||
use App\Utils\Exports\Pdf1;
|
||||
|
||||
class ConsumoFinanceiroController extends Controller
|
||||
{
|
||||
private const TITLE = 'RELATÓRIO DE CONSUMO FINANCEIRO';
|
||||
private const TEMPLATE = 'almoxarifado.relatorios.consumo-financeiro';
|
||||
|
||||
public static function getTemplate()
|
||||
{
|
||||
return ConsumoFinanceiroService::getPrintExportData();
|
||||
}
|
||||
|
||||
public function __invoke()
|
||||
{
|
||||
return Pdf1::generate(self::TITLE, self::TEMPLATE, self::getTemplate());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Impressao\Almoxarifado\Relatorios;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Services\Almoxarifado\Relatorios\ConsumoMedioMensalService;
|
||||
use App\Utils\Exports\Pdf1;
|
||||
|
||||
class ConsumoMedioMensalController extends Controller
|
||||
{
|
||||
private const TITLE = 'RELATÓRIO DE CONSUMO MÉDIO MENSAL';
|
||||
private const TEMPLATE = 'almoxarifado.relatorios.consumo-medio-mensal';
|
||||
|
||||
public static function getTemplate()
|
||||
{
|
||||
return ConsumoMedioMensalService::getPrintExportData();
|
||||
}
|
||||
|
||||
public function __invoke()
|
||||
{
|
||||
return Pdf1::generate(self::TITLE, self::TEMPLATE, self::getTemplate());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Impressao\Almoxarifado\Relatorios;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Services\Almoxarifado\Relatorios\EntradaService;
|
||||
use App\Utils\Exports\Pdf1;
|
||||
|
||||
class EntradaController extends Controller
|
||||
{
|
||||
private const TITLE = 'RELATÓRIO DE ENTRADA';
|
||||
private const TEMPLATE = 'almoxarifado.relatorios.entrada';
|
||||
|
||||
public static function getTemplate()
|
||||
{
|
||||
return EntradaService::getPrintExportData();
|
||||
}
|
||||
|
||||
public function __invoke()
|
||||
{
|
||||
return Pdf1::generate(self::TITLE, self::TEMPLATE, self::getTemplate());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Impressao\Almoxarifado\Relatorios;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Services\Almoxarifado\Relatorios\EstornoEntradaService;
|
||||
use App\Utils\Exports\Pdf1;
|
||||
|
||||
class EstornoEntradaController extends Controller
|
||||
{
|
||||
private const TITLE = 'RELATÓRIO DE ESTORNO DE ENTRADAS';
|
||||
private const TEMPLATE = 'almoxarifado.relatorios.estorno-entrada';
|
||||
|
||||
public static function getTemplate()
|
||||
{
|
||||
return EstornoEntradaService::getPrintExportData();
|
||||
}
|
||||
|
||||
public function __invoke()
|
||||
{
|
||||
return Pdf1::generate(self::TITLE, self::TEMPLATE, self::getTemplate());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Impressao\Almoxarifado\Relatorios;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Services\Almoxarifado\Relatorios\EstornoSaidaService;
|
||||
use App\Utils\Exports\Pdf1;
|
||||
|
||||
class EstornoSaidaController extends Controller
|
||||
{
|
||||
private const TITLE = 'RELATÓRIO DE ESTORNO DE SAÍDAS';
|
||||
private const TEMPLATE = 'almoxarifado.relatorios.estorno-saida';
|
||||
|
||||
public static function getTemplate()
|
||||
{
|
||||
return EstornoSaidaService::getPrintExportData();
|
||||
}
|
||||
|
||||
public function __invoke()
|
||||
{
|
||||
return Pdf1::generate(self::TITLE, self::TEMPLATE, self::getTemplate());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Impressao\Almoxarifado\Relatorios;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Almoxarifado\EntradaTipo;
|
||||
use App\Models\Almoxarifado\SaidaTipo;
|
||||
use App\Models\Cadastro\Estabelecimento\Infraestrutura;
|
||||
use App\Models\Cadastro\Estabelecimento\Setor;
|
||||
use App\Models\Cadastro\Estabelecimento\Unidade;
|
||||
use App\Models\Cadastro\Material\Material;
|
||||
use App\Models\Cadastro\OrigemProgramatica;
|
||||
use App\Models\Cadastro\SujeitoAtencao\Usuario;
|
||||
use App\Services\Almoxarifado\Relatorios\MovimentacaoGeralService;
|
||||
use App\Utils\Exports\Pdf1;
|
||||
|
||||
class MovimentacaoGeralController extends Controller
|
||||
{
|
||||
private const TITLE = 'RELATÓRIO DE MOVIMENTAÇÃO GERAL';
|
||||
private const TEMPLATE = 'almoxarifado.relatorios.movimentacao-geral';
|
||||
|
||||
public function __invoke()
|
||||
{
|
||||
$itens = MovimentacaoGeralService::index();
|
||||
|
||||
$data = [
|
||||
'periodo' => [
|
||||
'start' => request()->periodo['start'],
|
||||
'end' => request()->periodo['end'],
|
||||
],
|
||||
'movimentacao_tipo' => request()->movimentacao_tipo === 'entrada' ? 'ENTRADA' : 'SAÍDA',
|
||||
'movimentacao_subtipo' => (request()->movimentacao_tipo === 'entrada' ? EntradaTipo::find(request()->movimentacao_subtipo_id)->nome ?? null : SaidaTipo::find(request()->movimentacao_subtipo_id)->nome ?? null) ?? 'Todos',
|
||||
'unidade' => Unidade::find(request()->unidade_id)->nome_fantasia ?? 'Todas',
|
||||
'infraestrutura' => Infraestrutura::find(request()->infraestrutura_id)->nome ?? 'Todos',
|
||||
'setor' => Setor::find(request()->setor_id)->nome ?? 'Todos',
|
||||
'usuario' => Usuario::find(request()->usuario_id)->nome ?? 'Todos',
|
||||
'origem_programatica' => OrigemProgramatica::find(request()->origem_programatica_id) ?? 'Todas',
|
||||
'material' => Material::find(request()->material_id)->descricao_completa ?? 'Todos',
|
||||
'colunas' => collect(request()->selected_cols),
|
||||
'itens' => $itens,
|
||||
];
|
||||
|
||||
return Pdf1::generate(self::TITLE, self::TEMPLATE, $data, 'landscape');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Impressao\Almoxarifado\Relatorios;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Services\Almoxarifado\Relatorios\PosicaoEstoqueService;
|
||||
use App\Utils\Exports\Pdf1;
|
||||
|
||||
class PosicaoEstoqueController extends Controller
|
||||
{
|
||||
private const TITLE = 'RELATÓRIO DE POSIÇÃO DE ESTOQUE';
|
||||
private const TEMPLATE = 'almoxarifado.relatorios.posicao-estoque';
|
||||
|
||||
public static function getTemplate()
|
||||
{
|
||||
return PosicaoEstoqueService::getPrintData();
|
||||
}
|
||||
|
||||
public function __invoke()
|
||||
{
|
||||
return Pdf1::generate(self::TITLE, self::TEMPLATE, self::getTemplate());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Impressao\Almoxarifado\Relatorios;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Services\Almoxarifado\Relatorios\RequisicaoService;
|
||||
use App\Utils\Exports\Pdf1;
|
||||
|
||||
class RequisicaoController extends Controller
|
||||
{
|
||||
private const TITLE = 'RELATÓRIO DE REQUISIÇÕES';
|
||||
private const TEMPLATE = 'almoxarifado.relatorios.requisicao';
|
||||
|
||||
public static function getTemplate()
|
||||
{
|
||||
return RequisicaoService::getPrintExportData();
|
||||
}
|
||||
|
||||
public function __invoke()
|
||||
{
|
||||
return Pdf1::generate(self::TITLE, self::TEMPLATE, self::getTemplate());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Impressao\Almoxarifado\Relatorios;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Services\Almoxarifado\Relatorios\SaidaService;
|
||||
use App\Utils\Exports\Pdf1;
|
||||
|
||||
class SaidaController extends Controller
|
||||
{
|
||||
private const TITLE = 'RELATÓRIO DE SAÍDAS';
|
||||
private const TEMPLATE = 'almoxarifado.relatorios.saida';
|
||||
|
||||
public static function getTemplate()
|
||||
{
|
||||
return SaidaService::getPrintExportData();
|
||||
}
|
||||
|
||||
public function __invoke()
|
||||
{
|
||||
return Pdf1::generate(self::TITLE, self::TEMPLATE, self::getTemplate());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Impressao\Almoxarifado\Relatorios;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Services\Almoxarifado\Relatorios\ValidadeMaterialService;
|
||||
use App\Utils\Exports\Pdf1;
|
||||
|
||||
class ValidadeMaterialController extends Controller
|
||||
{
|
||||
private const TITLE = 'RELATÓRIO DE VALIDADE DE MATERIAL';
|
||||
private const TEMPLATE = 'almoxarifado.relatorios.validade-material';
|
||||
|
||||
public static function getTemplate()
|
||||
{
|
||||
return ValidadeMaterialService::getPrintExportData();
|
||||
}
|
||||
|
||||
public function __invoke()
|
||||
{
|
||||
return Pdf1::generate(self::TITLE, self::TEMPLATE, self::getTemplate());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Impressao\Almoxarifado;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Almoxarifado\Requisicao;
|
||||
use App\Services\Almoxarifado\RequisicaoPendentePermissaoService;
|
||||
use App\Utils\Exports\Pdf1;
|
||||
use App\Utils\MaskUtil;
|
||||
use Carbon\Carbon;
|
||||
|
||||
class RequisicaoController extends Controller
|
||||
{
|
||||
private const TITLE = 'REQUISIÇÃO';
|
||||
private const TEMPLATE = 'almoxarifado.requisicao';
|
||||
|
||||
public static function getTemplate($id)
|
||||
{
|
||||
$requisicao = Requisicao::findOrFail($id);
|
||||
$data = RequisicaoPendentePermissaoService::edit($id);
|
||||
$isPrimeiroEnvio = $data['form']['envios']->isEmpty();
|
||||
|
||||
$data['model']['itens'] = $data['model']['itens']->map(function ($item) {
|
||||
|
||||
$item['entrada_itens'] = $item['entrada_itens']
|
||||
->filter(fn ($i) => $i['quantidade_saida'] > 0)
|
||||
->values();
|
||||
|
||||
return $item;
|
||||
});
|
||||
|
||||
return [
|
||||
'data' => (new Carbon($requisicao->created_at))->format('d/m/Y'),
|
||||
'numero' => $requisicao->numero,
|
||||
'requisitante' => [
|
||||
'unidade' => $requisicao->createdCentroCusto->infraestrutura->unidade->nome_fantasia,
|
||||
'local_atendimento' => $requisicao->createdCentroCusto->infraestrutura->nome,
|
||||
'setor' => $requisicao->createdCentroCusto->setor->nome,
|
||||
'usuario' => $requisicao->createdLotacao->usuario->cidadao->nome,
|
||||
'endereco' => $requisicao->createdCentroCusto->infraestrutura->endereco->completo,
|
||||
'telefone' => MaskUtil::getPhoneMasked($requisicao->createdCentroCusto->infraestrutura->telefone)
|
||||
],
|
||||
'isPrimeiroEnvio' => $isPrimeiroEnvio,
|
||||
'itens' => $data['model']['itens'],
|
||||
];
|
||||
}
|
||||
|
||||
public function __invoke($id)
|
||||
{
|
||||
return Pdf1::generate(self::TITLE, self::TEMPLATE, self::getTemplate($id));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Impressao\Almoxarifado;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Almoxarifado\Requisicao;
|
||||
use App\Services\Almoxarifado\RequisicaoPendentePermissaoService;
|
||||
use App\Utils\Exports\Pdf1;
|
||||
use App\Utils\MaskUtil;
|
||||
use Carbon\Carbon;
|
||||
|
||||
class RequisicaoSeparacaoMaterialController extends Controller
|
||||
{
|
||||
private const TITLE = 'REQUISIÇÃO - SEPARAR MATERIAL';
|
||||
private const TEMPLATE = 'almoxarifado.requisicao-separacao-material';
|
||||
|
||||
public static function getTemplate($id)
|
||||
{
|
||||
$requisicao = Requisicao::findOrFail($id);
|
||||
$data = RequisicaoPendentePermissaoService::edit($id);
|
||||
$isPrimeiroEnvio = $data['form']['envios']->isEmpty();
|
||||
|
||||
$data['model']['itens'] = $data['model']['itens']->map(function ($item) {
|
||||
|
||||
$item['entrada_itens'] = $item['entrada_itens']
|
||||
->filter(fn ($i) => $i['quantidade_saida'] > 0)
|
||||
->values();
|
||||
|
||||
return $item;
|
||||
});
|
||||
|
||||
return [
|
||||
'data' => (new Carbon($requisicao->created_at))->format('d/m/Y'),
|
||||
'numero' => $requisicao->numero,
|
||||
'requisitante' => [
|
||||
'unidade' => $requisicao->createdCentroCusto->infraestrutura->unidade->nome_fantasia,
|
||||
'local_atendimento' => $requisicao->createdCentroCusto->infraestrutura->nome,
|
||||
'setor' => $requisicao->createdCentroCusto->setor->nome,
|
||||
'usuario' => $requisicao->createdLotacao->usuario->cidadao->nome,
|
||||
'endereco' => $requisicao->createdCentroCusto->infraestrutura->endereco->completo,
|
||||
'telefone' => MaskUtil::getPhoneMasked($requisicao->createdCentroCusto->infraestrutura->telefone)
|
||||
],
|
||||
'isPrimeiroEnvio' => $isPrimeiroEnvio,
|
||||
'itens' => $data['model']['itens'],
|
||||
];
|
||||
}
|
||||
|
||||
public function __invoke($id)
|
||||
{
|
||||
return Pdf1::generate(self::TITLE, self::TEMPLATE, self::getTemplate($id));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,84 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Impressao\Almoxarifado;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Almoxarifado\Saida;
|
||||
use App\Services\Almoxarifado\SaidaService;
|
||||
use App\Utils\Exports\Pdf1;
|
||||
use App\Utils\MaskUtil;
|
||||
use Carbon\Carbon;
|
||||
|
||||
class SaidaController extends Controller
|
||||
{
|
||||
private const TITLE = 'SAÍDA';
|
||||
private const TEMPLATE = 'almoxarifado.saida';
|
||||
|
||||
public static function getTemplate($id)
|
||||
{
|
||||
$saida = Saida::findOrFail($id);
|
||||
$data = SaidaService::edit($id);
|
||||
|
||||
$data['model']['itens'] = $data['model']['itens']->filter(fn ($i) => !$i['estornado'])->map(function ($item) {
|
||||
|
||||
$semLote = collect();
|
||||
$comLote = collect();
|
||||
|
||||
collect($item['entrada_itens'])->each(function ($entrada) use ($semLote, $comLote) {
|
||||
|
||||
if (is_null($entrada['lote'])) {
|
||||
|
||||
$semLote->push($entrada);
|
||||
}
|
||||
else {
|
||||
|
||||
$comLote->push($entrada);
|
||||
}
|
||||
});
|
||||
|
||||
$item['possui_entrada_com_lote'] = $comLote->isNotEmpty();
|
||||
|
||||
$semLote = $semLote
|
||||
->sortBy('entrada_item_id')
|
||||
->values();
|
||||
|
||||
$comLote = $comLote
|
||||
->sortBy([
|
||||
['validade_lote', 'asc'],
|
||||
['entrada_item_id', 'asc']
|
||||
])
|
||||
->values();
|
||||
|
||||
$item['entrada_itens'] = $comLote->concat($semLote)->map(function ($entrada) {
|
||||
|
||||
if (!is_null($entrada['validade_lote'])) {
|
||||
|
||||
$entrada['validade_lote'] = $entrada['validade_lote']->format('d/m/Y');
|
||||
}
|
||||
|
||||
return $entrada;
|
||||
});
|
||||
|
||||
return $item;
|
||||
});
|
||||
|
||||
return [
|
||||
'data' => (new Carbon($saida->requisicao->data))->format('d/m/Y'),
|
||||
'numero' => $saida->requisicao->numero,
|
||||
'requisitante' => [
|
||||
'unidade' => $saida->requisicao->centroCusto->infraestrutura->unidade->nome_fantasia,
|
||||
'local_atendimento' => $saida->requisicao->centroCusto->infraestrutura->nome,
|
||||
'setor' => $saida->requisicao->centroCusto->setor->nome,
|
||||
'usuario' => $saida->requisicao->usuario->cidadao->nome,
|
||||
'endereco' => $saida->requisicao->centroCusto->infraestrutura->endereco->completo,
|
||||
'telefone' => MaskUtil::getPhoneMasked($saida->requisicao->centroCusto->infraestrutura->telefone)
|
||||
],
|
||||
'itens' => $data['model']['itens'],
|
||||
];
|
||||
}
|
||||
|
||||
public function __invoke($id)
|
||||
{
|
||||
return Pdf1::generate(self::TITLE, self::TEMPLATE, self::getTemplate($id));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Impressao\Almoxarifado;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Almoxarifado\Saida;
|
||||
use App\Services\Almoxarifado\TransferenciaService;
|
||||
use App\Utils\Exports\Pdf1;
|
||||
use App\Utils\MaskUtil;
|
||||
|
||||
class TransferenciaController extends Controller
|
||||
{
|
||||
private const TITLE = 'DOCUMENTO DE TRANSFERÊNCIA DE ESTOQUE';
|
||||
private const TEMPLATE = 'almoxarifado.transferencia';
|
||||
|
||||
public static function getTemplate($id)
|
||||
{
|
||||
$saida = Saida::findOrFail($id);
|
||||
$data = TransferenciaService::edit($id);
|
||||
|
||||
$data['model']['itens'] = $data['model']['itens']->filter(fn ($i) => !$i['estornado'])->map(function ($item) {
|
||||
|
||||
$semLote = collect();
|
||||
$comLote = collect();
|
||||
|
||||
collect($item['entrada_itens'])->each(function ($entrada) use ($semLote, $comLote) {
|
||||
|
||||
if (is_null($entrada['lote'])) {
|
||||
|
||||
$semLote->push($entrada);
|
||||
}
|
||||
else {
|
||||
|
||||
$comLote->push($entrada);
|
||||
}
|
||||
});
|
||||
|
||||
$item['possui_entrada_com_lote'] = $comLote->isNotEmpty();
|
||||
|
||||
$semLote = $semLote
|
||||
->sortBy('entrada_item_id')
|
||||
->values();
|
||||
|
||||
$comLote = $comLote
|
||||
->sortBy([
|
||||
['validade_lote', 'asc'],
|
||||
['entrada_item_id', 'asc']
|
||||
])
|
||||
->values();
|
||||
|
||||
$item['entrada_itens'] = $comLote->concat($semLote)->map(function ($entrada) {
|
||||
|
||||
if (!is_null($entrada['validade_lote'])) {
|
||||
|
||||
$entrada['validade_lote'] = $entrada['validade_lote']->format('d/m/Y');
|
||||
}
|
||||
|
||||
return $entrada;
|
||||
});
|
||||
|
||||
return $item;
|
||||
});
|
||||
|
||||
return [
|
||||
'destino' => [
|
||||
'unidade' => $saida->transferencia->centroCusto->infraestrutura->unidade->nome_fantasia,
|
||||
'local_atendimento' => $saida->transferencia->centroCusto->infraestrutura->nome,
|
||||
'setor' => $saida->transferencia->centroCusto->setor->nome,
|
||||
'usuario' => $saida->transferencia->usuario->cidadao->nome,
|
||||
'endereco' => $saida->transferencia->centroCusto->infraestrutura->endereco->completo,
|
||||
'telefone' => MaskUtil::getPhoneMasked($saida->transferencia->centroCusto->infraestrutura->telefone)
|
||||
],
|
||||
'itens' => $data['model']['itens'],
|
||||
];
|
||||
}
|
||||
|
||||
public function __invoke($id)
|
||||
{
|
||||
return Pdf1::generate(self::TITLE, self::TEMPLATE, self::getTemplate($id));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user