Files
rkm-conectasus-ci-sandbox/api/app/Http/Controllers/Impressao/Almoxarifado/TransferenciaController.php
Antonio Lopes dos Santos afec302c3e
All checks were successful
build-api-image / build (push) Successful in 51s
init commit
2026-08-04 16:52:02 -03:00

82 lines
2.6 KiB
PHP

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