util = $util; $this->middleware('permission:pdv_create', ['only' => ['create', 'store']]); $this->middleware('permission:pdv_edit', ['only' => ['edit', 'update']]); $this->middleware('permission:pdv_view', ['only' => ['show', 'index']]); $this->middleware('permission:pdv_delete', ['only' => ['destroy']]); } private function setNumeroSequencial(){ $docs = Nfce::where('empresa_id', request()->empresa_id) ->where('numero_sequencial', null) ->get(); $last = Nfce::where('empresa_id', request()->empresa_id) ->orderBy('numero_sequencial', 'desc') ->where('numero_sequencial', '>', 0)->first(); $numero = $last != null ? $last->numero_sequencial : 0; $numero++; foreach($docs as $d){ $d->numero_sequencial = $numero; $d->save(); $numero++; } } private function getContigencia($empresa_id){ $active = Contigencia:: where('empresa_id', $empresa_id) ->where('status', 1) ->where('documento', 'NFCe') ->first(); return $active; } private function corrigeNumeros($empresa_id){ $config = ConfigGeral::where('empresa_id', $empresa_id)->first(); if($config != null && $config->corrigir_numeracao_fiscal == 0){ return; } $item = UsuarioEmissao::where('usuario_empresas.empresa_id', request()->empresa_id) ->join('usuario_empresas', 'usuario_empresas.usuario_id', '=', 'usuario_emissaos.usuario_id') ->select('usuario_emissaos.*') ->where('usuario_emissaos.usuario_id', get_id_user()) ->first(); if($item != null){ return; } $locais = Localizacao::where('empresa_id', $empresa_id)->where('status', 1)->get(); foreach($locais as $key => $local){ $empresa = Empresa::findOrFail($empresa_id); $caixa = __isCaixaAberto(); if($caixa){ $empresa = __objetoParaEmissao($empresa, $local->id); } if($empresa->ambiente == 1){ $numero = $empresa->numero_ultima_nfce_producao; }else{ $numero = $empresa->numero_ultima_nfce_homologacao; } if($numero){ Nfce::where(function($q) { $q->where('estado', 'novo')->orWhere('estado', 'rejeitado'); }) ->where('empresa_id', $empresa_id) ->where('local_id', $local->id) // ->where('caixa_id', $caixa->id) ->update(['numero' => $numero+1]); } } } public function imprimirCarne($id){ $item = Nfce::findOrFail($id); $config = Empresa::findOrFail(request()->empresa_id); $p = view('front_box.carne', compact('config', 'item')); $domPdf = new Dompdf(["enable_remote" => true]); $domPdf->loadHtml($p); $pdf = ob_get_clean(); $domPdf->setPaper("A4"); $domPdf->render(); $domPdf->stream("Carnê de venda.pdf", array("Attachment" => false)); } public function index(Request $request) { $this->setNumeroSequencial(); $this->corrigeNumeros($request->empresa_id); $user = User::findOrFail(Auth::user()->id); $adm = $user->admin; $start_date = $request->get('start_date'); $end_date = $request->get('end_date'); $cliente_id = $request->get('cliente_id'); $user_id = $request->get('user_id'); $estado = $request->get('estado'); $query = Nfce::where('empresa_id', request()->empresa_id) ->when(!empty($start_date), function ($query) use ($start_date) { return $query->whereDate('created_at', '>=', $start_date); }) ->when(!empty($end_date), function ($query) use ($end_date) { return $query->whereDate('created_at', '<=', $end_date); }) ->when(!empty($cliente_id), function ($query) use ($cliente_id) { return $query->where('cliente_id', $cliente_id); }) ->when($estado != "", function ($query) use ($estado) { return $query->where('estado', $estado); }) ->when(!empty($user_id), function ($query) use ($user_id) { return $query->where('user_id', $user_id); }) ->when($adm == 0, function ($query) use ($user) { return $query->where('user_id', $user->id); }) ->orderBy('created_at', 'desc'); $somaGeral = $query->sum('total'); $data = $query->paginate(__itensPagina()); $contigencia = $this->getContigencia(request()->empresa_id); $usuarios = User::where('usuario_empresas.empresa_id', request()->empresa_id) ->join('usuario_empresas', 'users.id', '=', 'usuario_empresas.usuario_id') ->select('users.*') ->get(); $config = ConfigGeral::where('empresa_id', $request->empresa_id)->first(); $envioWppLink = 0; if($config != null && $config->status_wpp_link){ $envioWppLink = 1; } $usarDropdown = 0; $ticketTroca = 0; if($config){ $usarDropdown = $config->usar_dropdown_acoes; $ticketTroca = $config->ticket_troca; } return view('front_box.index', compact('data', 'contigencia', 'usuarios', 'adm', 'somaGeral', 'envioWppLink', 'usarDropdown', 'ticketTroca')); } /** * Show the form for creating a new resource. */ public function create(Request $request) { if (!__isCaixaAberto()) { session()->flash("flash_warning", "Abrir caixa antes de continuar!"); return redirect()->route('caixa.create'); } $ua = $request->header('User-Agent'); if (preg_match('/Android|iPhone|iPad|iPod|Mobile/i', $ua) && file_exists(public_path('style_pdv_mobo.css'))) { return redirect()->route('pdv-mobo.index'); } $caixa = __isCaixaAberto(); $categorias = CategoriaProduto::where('empresa_id', request()->empresa_id)->where('status', 1) ->where('categoria_id', null) ->get(); $abertura = Caixa::where('usuario_id', get_id_user()) ->where('status', 1) ->first(); $config = Empresa::findOrFail(request()->empresa_id); if($config == null){ session()->flash("flash_warning", "Configure antes de continuar!"); return redirect()->route('config.index'); } if($config->natureza_id_pdv == null){ session()->flash("flash_warning", "Configure a natureza de operação padrão para continuar!"); return redirect()->route('config.index'); } $funcionarios = Funcionario::where('empresa_id', request()->empresa_id) ->where('status', 1)->get(); $config = ConfigGeral::where('empresa_id', request()->empresa_id)->first(); $tiposPagamento = Nfce::tiposPagamento(); // dd($tiposPagamento); if($config != null){ $config->tipos_pagamento_pdv = $config != null && $config->tipos_pagamento_pdv ? json_decode($config->tipos_pagamento_pdv) : []; $temp = []; if(sizeof($config->tipos_pagamento_pdv) > 0){ foreach($tiposPagamento as $key => $t){ if(in_array($t, $config->tipos_pagamento_pdv)){ $temp[$key] = $t; } } $tiposPagamento = $temp; } } $item = null; $itenSuspensa = []; $isVendaSuspensa = 0; $isOrcamento = 0; $title = 'Nova Venda - PDV'; if(isset($request->venda_suspensa)){ $item = VendaSuspensa::findOrfail($request->venda_suspensa); $isVendaSuspensa = 1; $title = 'Venda Suspensa'; foreach($item->itens as $i){ $itenSuspensa[] = [ '_id' => rand(1, 10000000000), 'produto_id' => $i->produto_id, 'produto_nome' => $i->produto->nome, 'valor_unitario' => $i->valor_unitario, 'sub_total' => $i->sub_total, 'quantidade' => $i->quantidade, ]; } } $funcionario = null; if(isset($request->orcamento)){ $item = Nfe::findOrfail($request->orcamento); $isOrcamento = 1; $title = 'Orçamento'; foreach($item->itens as $i){ $itenSuspensa[] = [ '_id' => rand(1, 10000000000), 'produto_id' => $i->produto_id, 'produto_nome' => $i->produto->nome, 'valor_unitario' => $i->valor_unitario, 'sub_total' => $i->sub_total, 'quantidade' => $i->quantidade, ]; } $funcionario = $item->funcionario; } $configTef = TefMultiPlusCard::where('empresa_id', request()->empresa_id) ->where('status', 1) ->where('usuario_id', Auth::user()->id) ->first(); $view = 'front_box.create'; $produtos = []; $marcas = []; if($config != null && $config->modelo == 'compact'){ $view = 'front_box.create2'; $categorias = CategoriaProduto::where('empresa_id', request()->empresa_id) ->where('categoria_id', null) ->orderBy('nome', 'asc') ->where('status', 1) ->paginate(4); $marcas = Marca::where('empresa_id', request()->empresa_id) ->orderBy('nome', 'asc') ->paginate(4); $produtos = Produto::select('produtos.*', \DB::raw('sum(quantidade) as quantidade')) ->where('empresa_id', request()->empresa_id) ->where('produtos.status', 1) ->where('status', 1) ->leftJoin('item_nfces', 'item_nfces.produto_id', '=', 'produtos.id') ->groupBy('produtos.id') ->orderBy('quantidade', 'desc') ->join('produto_localizacaos', 'produto_localizacaos.produto_id', '=', 'produtos.id') ->where('produto_localizacaos.localizacao_id', $caixa->localizacao->id) ->paginate(12); } $empresa = null; $user = null; $clientes = null; $listasPreco = null; $clientePadrao = null; if($config != null && $config->modelo == 'quick'){ $view = 'front_box.create3'; if($config->cliente_padrao_pdv_off){ $clientePadrao = Cliente::findOrFail($config->cliente_padrao_pdv_off); } $empresa = Empresa::findOrFail(request()->empresa_id); $user = User::findOrFail(Auth::user()->id); $clientes = Cliente::where('empresa_id', $request->empresa_id) ->where('status', 1)->orderBy('razao_social')->get(); $produtos = Produto::where('empresa_id', $request->empresa_id) ->select('id', 'numero_sequencial', 'codigo_barras', 'referencia', 'referencia_balanca', 'valor_unitario', 'nome', 'categoria_id', 'imagem', 'gerenciar_estoque', 'valor_atacado', 'valor_minimo_venda', 'quantidade_atacado') ->where('status', 1)->orderBy('nome')->get(); foreach($produtos as $p){ $p['valor_original'] = $p->valor_unitario; foreach($p->itemLista as $i){ $p['valor_lista_'.$i->lista_id] = $i->valor; } if($p->precoComPromocao()){ $p->valor_unitario = $p->precoComPromocao()->valor; $p->promocao = "
promoção " . __data_pt($p->precoComPromocao()->data_inicio, 0) . " até " . __data_pt($p->precoComPromocao()->data_fim, 0) . ""; } } $listasPreco = ListaPreco::orderBy('nome', 'desc') ->select('lista_precos.id', 'lista_precos.nome') ->where('empresa_id', $request->empresa_id) ->where('lista_precos.status', 1) ->join('lista_preco_usuarios', 'lista_preco_usuarios.lista_preco_id', '=', 'lista_precos.id') ->where('lista_preco_usuarios.usuario_id', get_id_user()) ->get(); } $local_id = $caixa->local_id; $contasEmpresa = ContaEmpresa::where('empresa_id', request()->empresa_id) ->where('status', 1) ->get(); return view($view, compact('categorias', 'abertura', 'funcionarios', 'caixa', 'config', 'tiposPagamento', 'item', 'isVendaSuspensa', 'title', 'configTef', 'marcas', 'produtos', 'local_id', 'empresa', 'user', 'clientes', 'itenSuspensa', 'listasPreco', 'clientePadrao', 'isOrcamento', 'funcionario', 'contasEmpresa')); } public function teste(Request $request) { if (!__isCaixaAberto()) { session()->flash("flash_warning", "Abrir caixa antes de continuar!"); return redirect()->route('caixa.create'); } $ua = $request->header('User-Agent'); if (preg_match('/Android|iPhone|iPad|iPod|Mobile/i', $ua) && file_exists(public_path('style_pdv_mobo.css'))) { return redirect()->route('pdv-mobo.index'); } $caixa = __isCaixaAberto(); $categorias = CategoriaProduto::where('empresa_id', request()->empresa_id)->where('status', 1) ->where('categoria_id', null) ->get(); $abertura = Caixa::where('usuario_id', get_id_user()) ->where('status', 1) ->first(); $config = Empresa::findOrFail(request()->empresa_id); if($config == null){ session()->flash("flash_warning", "Configure antes de continuar!"); return redirect()->route('config.index'); } if($config->natureza_id_pdv == null){ session()->flash("flash_warning", "Configure a natureza de operação padrão para continuar!"); return redirect()->route('config.index'); } $funcionarios = Funcionario::where('empresa_id', request()->empresa_id) ->where('status', 1)->get(); $config = ConfigGeral::where('empresa_id', request()->empresa_id)->first(); $tiposPagamento = Nfce::tiposPagamento(); // dd($tiposPagamento); if($config != null){ $config->tipos_pagamento_pdv = $config != null && $config->tipos_pagamento_pdv ? json_decode($config->tipos_pagamento_pdv) : []; $temp = []; if(sizeof($config->tipos_pagamento_pdv) > 0){ foreach($tiposPagamento as $key => $t){ if(in_array($t, $config->tipos_pagamento_pdv)){ $temp[$key] = $t; } } $tiposPagamento = $temp; } } $item = null; $itenSuspensa = []; $isVendaSuspensa = 0; $isOrcamento = 0; $title = 'Nova Venda - PDV'; if(isset($request->venda_suspensa)){ $item = VendaSuspensa::findOrfail($request->venda_suspensa); $isVendaSuspensa = 1; $title = 'Venda Suspensa'; foreach($item->itens as $i){ $itenSuspensa[] = [ '_id' => rand(1, 10000000000), 'produto_id' => $i->produto_id, 'produto_nome' => $i->produto->nome, 'valor_unitario' => $i->valor_unitario, 'sub_total' => $i->sub_total, 'quantidade' => $i->quantidade, ]; } } $funcionario = null; if(isset($request->orcamento)){ $item = Nfe::findOrfail($request->orcamento); $isOrcamento = 1; $title = 'Orçamento'; foreach($item->itens as $i){ $itenSuspensa[] = [ '_id' => rand(1, 10000000000), 'produto_id' => $i->produto_id, 'produto_nome' => $i->produto->nome, 'valor_unitario' => $i->valor_unitario, 'sub_total' => $i->sub_total, 'quantidade' => $i->quantidade, ]; } $funcionario = $item->funcionario; } $configTef = TefMultiPlusCard::where('empresa_id', request()->empresa_id) ->where('status', 1) ->where('usuario_id', Auth::user()->id) ->first(); $view = 'front_box.create'; $produtos = []; $marcas = []; if($config != null && $config->modelo == 'compact'){ $view = 'front_box.create2'; $categorias = CategoriaProduto::where('empresa_id', request()->empresa_id) ->where('categoria_id', null) ->orderBy('nome', 'asc') ->where('status', 1) ->paginate(4); $marcas = Marca::where('empresa_id', request()->empresa_id) ->orderBy('nome', 'asc') ->paginate(4); $produtos = Produto::select('produtos.*', \DB::raw('sum(quantidade) as quantidade')) ->where('empresa_id', request()->empresa_id) ->where('produtos.status', 1) ->where('status', 1) ->leftJoin('item_nfces', 'item_nfces.produto_id', '=', 'produtos.id') ->groupBy('produtos.id') ->orderBy('quantidade', 'desc') ->join('produto_localizacaos', 'produto_localizacaos.produto_id', '=', 'produtos.id') ->where('produto_localizacaos.localizacao_id', $caixa->localizacao->id) ->paginate(12); } $empresa = null; $user = null; $clientes = null; $listasPreco = null; $clientePadrao = null; if($config != null && $config->modelo == 'quick'){ $view = 'front_box.create3'; if($config->cliente_padrao_pdv_off){ $clientePadrao = Cliente::findOrFail($config->cliente_padrao_pdv_off); } $empresa = Empresa::findOrFail(request()->empresa_id); $user = User::findOrFail(Auth::user()->id); $clientes = Cliente::where('empresa_id', $request->empresa_id) ->where('status', 1)->orderBy('razao_social')->get(); $produtos = Produto::where('empresa_id', $request->empresa_id) ->select('id', 'numero_sequencial', 'codigo_barras', 'referencia', 'referencia_balanca', 'valor_unitario', 'nome', 'categoria_id', 'imagem', 'gerenciar_estoque', 'valor_atacado', 'valor_minimo_venda', 'quantidade_atacado') ->where('status', 1)->orderBy('nome')->get(); foreach($produtos as $p){ $p['valor_original'] = $p->valor_unitario; foreach($p->itemLista as $i){ $p['valor_lista_'.$i->lista_id] = $i->valor; } if($p->precoComPromocao()){ $p->valor_unitario = $p->precoComPromocao()->valor; $p->promocao = "
promoção " . __data_pt($p->precoComPromocao()->data_inicio, 0) . " até " . __data_pt($p->precoComPromocao()->data_fim, 0) . ""; } } $listasPreco = ListaPreco::orderBy('nome', 'desc') ->select('lista_precos.id', 'lista_precos.nome') ->where('empresa_id', $request->empresa_id) ->where('lista_precos.status', 1) ->join('lista_preco_usuarios', 'lista_preco_usuarios.lista_preco_id', '=', 'lista_precos.id') ->where('lista_preco_usuarios.usuario_id', get_id_user()) ->get(); } $local_id = $caixa->local_id; return view('front_box.teste', compact('categorias', 'abertura', 'funcionarios', 'caixa', 'config', 'tiposPagamento', 'item', 'isVendaSuspensa', 'title', 'configTef', 'marcas', 'produtos', 'local_id', 'empresa', 'user', 'clientes', 'itenSuspensa', 'listasPreco', 'clientePadrao', 'isOrcamento', 'funcionario')); } /** * Store a newly created resource in storage. */ public function store(Request $request) { // } /** * Display the specified resource. */ public function show(string $id) { $data = Nfce::findOrFail($id); __validaObjetoEmpresa($data); return view('front_box.show', compact('data')); } /** * Show the form for editing the specified resource. */ public function edit(string $id) { $item = Nfce:: with(['itens', 'cliente']) ->findOrFail($id); __validaObjetoEmpresa($item); if (!__isCaixaAberto()) { session()->flash("flash_warning", "Abrir caixa antes de continuar!"); return redirect()->route('caixa.create'); } $categorias = CategoriaProduto::where('empresa_id', request()->empresa_id)->where('status', 1) ->where('categoria_id', null) ->get(); $abertura = Caixa::where('usuario_id', get_id_user()) ->where('status', 1) ->first(); $config = Empresa::findOrFail(request()->empresa_id); if($config == null){ session()->flash("flash_warning", "Configure antes de continuar!"); return redirect()->route('config.index'); } if($config->natureza_id_pdv == null){ session()->flash("flash_warning", "Configure a natureza de operação padrão para continuar!"); return redirect()->route('config.index'); } $tiposPagamento = Nfce::tiposPagamento(); // dd($tiposPagamento); if($config != null){ $config->tipos_pagamento_pdv = $config != null && $config->tipos_pagamento_pdv ? json_decode($config->tipos_pagamento_pdv) : []; $temp = []; if(sizeof($config->tipos_pagamento_pdv) > 0){ foreach($tiposPagamento as $key => $t){ if(in_array($t, $config->tipos_pagamento_pdv)){ $temp[$key] = $t; } } $tiposPagamento = $temp; } } $funcionarios = Funcionario::where('empresa_id', request()->empresa_id) ->where('status', 1)->get(); $cliente = $item->cliente; $funcionario = $item->funcionario; $caixa = __isCaixaAberto(); $isVendaSuspensa = 0; $config = Empresa::findOrFail(request()->empresa_id); $view = 'front_box.edit'; $produtos = []; $marcas = []; $config = ConfigGeral::where('empresa_id', request()->empresa_id)->first(); if($config != null && $config->modelo == 'compact'){ $view = 'front_box.edit2'; $categorias = CategoriaProduto::where('empresa_id', request()->empresa_id) ->where('categoria_id', null) ->orderBy('nome', 'asc') ->where('status', 1) ->paginate(4); $marcas = Marca::where('empresa_id', request()->empresa_id) ->orderBy('nome', 'asc') ->paginate(4); $produtos = Produto::select('produtos.*', \DB::raw('sum(quantidade) as quantidade')) ->where('empresa_id', request()->empresa_id) ->where('produtos.status', 1) ->where('status', 1) ->leftJoin('item_nfces', 'item_nfces.produto_id', '=', 'produtos.id') ->groupBy('produtos.id') ->orderBy('quantidade', 'desc') ->join('produto_localizacaos', 'produto_localizacaos.produto_id', '=', 'produtos.id') ->where('produto_localizacaos.localizacao_id', $caixa->localizacao->id) ->paginate(12); } $empresa = null; $user = null; $clientes = null; $listasPreco = null; $itensVenda = null; $title = 'Editar Venda - PDV'; if($config != null && $config->modelo == 'quick'){ $view = 'front_box.create3'; $empresa = Empresa::findOrFail(request()->empresa_id); $user = User::findOrFail(Auth::user()->id); $clientes = Cliente::where('empresa_id', request()->empresa_id) ->where('status', 1)->orderBy('razao_social')->get(); $produtos = Produto::where('empresa_id', request()->empresa_id) ->select('id', 'numero_sequencial', 'codigo_barras', 'referencia', 'referencia_balanca', 'valor_unitario', 'nome', 'categoria_id', 'imagem', 'gerenciar_estoque') ->where('status', 1)->orderBy('nome')->get(); foreach($produtos as $p){ $p['valor_original'] = $p->valor_unitario; foreach($p->itemLista as $i){ $p['valor_lista_'.$i->lista_id] = $i->valor; } if($p->precoComPromocao()){ $p->valor_unitario = $p->precoComPromocao()->valor; $p->promocao = " \npromoção " . __data_pt($p->precoComPromocao()->data_inicio, 0) . " até " . __data_pt($p->precoComPromocao()->data_fim, 0); } } $listasPreco = ListaPreco::orderBy('nome', 'desc') ->select('lista_precos.id', 'lista_precos.nome') ->where('empresa_id', request()->empresa_id) ->where('lista_precos.status', 1) ->join('lista_preco_usuarios', 'lista_preco_usuarios.lista_preco_id', '=', 'lista_precos.id') ->where('lista_preco_usuarios.usuario_id', get_id_user()) ->get(); $itenSuspensa = []; foreach($item->itens as $i){ $itensVenda[] = [ '_id' => rand(1, 10000000000), 'produto_id' => $i->produto_id, 'produto_nome' => $i->produto->nome, 'valor_unitario' => $i->valor_unitario, 'sub_total' => $i->sub_total, 'quantidade' => number_format($i->quantidade, $config->casas_decimais_quantidade, ',', ''), ]; } } $local_id = $caixa->local_id; $isOrcamento = 0; return view($view, compact('categorias', 'abertura', 'funcionarios', 'item', 'cliente', 'funcionario', 'caixa', 'isVendaSuspensa', 'tiposPagamento', 'config', 'produtos', 'categorias', 'marcas', 'local_id', 'empresa', 'user', 'clientes', 'listasPreco', 'itensVenda', 'title', 'isOrcamento')); } public function logs(Request $request){ if(!__isAdmin()){ abort(403); } $start_date = $request->start_date; $end_date = $request->end_date; $acao = $request->acao; $usuario_id = $request->usuario_id; $start_time = $request->start_time; $end_time = $request->end_time; if($start_date){ if($start_time){ $start_date .= " $start_time:59"; }else{ $start_date .= " 00:00:00"; } } if($end_date){ if($end_time){ $end_date .= " $end_time:59"; }else{ $end_date .= " 23:59:59"; } } $data = PdvLog::where('empresa_id', $request->empresa_id) ->when(!empty($start_date), function ($query) use ($start_date) { return $query->whereDate('created_at', '>=', $start_date); }) ->when(!empty($end_date), function ($query) use ($end_date) { return $query->whereDate('created_at', '<=', $end_date); }) ->when(!empty($usuario_id), function ($query) use ($usuario_id) { return $query->where('usuario_id', $usuario_id); }) ->when(!empty($acao), function ($query) use ($acao) { return $query->where('acao', $acao); }) ->orderBy('id', 'desc')->paginate(__itensPagina()); return view('front_box.logs', compact('data')); } public function destroy(string $id) { $item = Nfce::findOrFail($id); __validaObjetoEmpresa($item); try { $descricaoLog = "#$item->numero_sequencial - R$ " . __moeda($item->total); foreach ($item->itens as $i) { if ($i->produto && $i->produto->gerenciar_estoque) { $this->util->incrementaEstoque($i->produto_id, $i->quantidade, $i->variacao_id, $item->local_id); } $i->adicionais()->delete(); $i->pizzas()->delete(); } $comissao = ComissaoVenda::where('empresa_id', $item->empresa_id) ->where('nfce_id', $item->id)->first(); if($comissao){ $comissao->delete(); } $garantia = Garantia::where('empresa_id', $item->empresa_id) ->where('nfce_id', $item->id)->first(); if($garantia){ $garantia->delete(); } $item->itens()->delete(); $item->fatura()->delete(); $item->contaReceber()->delete(); $item->delete(); __createLog(request()->empresa_id, 'PDV', 'excluir', $descricaoLog); session()->flash("flash_success", "Venda removida!"); } catch (\Exception $e) { // echo $e->getMessage() . '
' . $e->getLine(); // die; __createLog(request()->empresa_id, 'PDV', 'erro', $e->getMessage()); session()->flash("flash_error", 'Algo deu errado: '. $e->getMessage()); } return redirect()->back(); } public function destroySuspensa(string $id) { $item = VendaSuspensa::findOrFail($id); __validaObjetoEmpresa($item); try { $item->itens()->delete(); $item->delete(); session()->flash("flash_success", "Registro removido!"); } catch (\Exception $e) { // echo $e->getMessage() . '
' . $e->getLine(); // die; session()->flash("flash_error", 'Algo deu errado.', $e->getMessage()); } return redirect()->back(); } public function imprimirTicketTroca($id){ $item = Nfce::findOrFail($id); __validaObjetoEmpresa($item); $config = Empresa::where('id', $item->empresa_id) ->first(); $configGeral = ConfigGeral::where('empresa_id', $item->empresa_id)->first(); $p = view('front_box.ticket_troca', compact('config', 'item', 'configGeral')); $domPdf = new Dompdf(["enable_remote" => true]); $domPdf->loadHtml($p); $height = 360; $height += sizeof($item->itens)*11; foreach($item->itens as $it){ if(strlen($it->descricao()) > 10){ $height += 10; } } foreach($item->itensServico as $it){ if(strlen($it->servico->nome) > 10){ $height += 10; } } if($item->observacao != ''){ $height += 30; } if($configGeral && $configGeral->mensagem_padrao_impressao_venda != ''){ $height += 30; } $height += sizeof($item->fatura)*5; $pdf = ob_get_clean(); $domPdf->setPaper([0,0,244,$height]); $pdf = $domPdf->render(); $domPdf->stream("Doc. Auxiliar $item->numero_sequencial.pdf", array("Attachment" => false)); } // public function imprimirNaoFiscal($id) // { // $item = Nfce::findOrFail($id); // __validaObjetoEmpresa($item); // $config = Empresa::where('id', $item->empresa_id) // ->first(); // $config = __objetoParaEmissao($config, $item->local_id); // $usuario = UsuarioEmpresa::find(get_id_user()); // $cupom = new CupomNaoFiscal($item, $config, 0); // $logo = null; // if($config->logo && file_exists(public_path('/uploads/logos/') . $config->logo)){ // $logo = public_path('/uploads/logos/') . $config->logo; // } // $pdf = $cupom->render($logo); // header("Content-Disposition: ; filename=CUPOM.pdf"); // return response($pdf) // ->header('Content-Type', 'application/pdf'); // } public function imprimirNaoFiscal($id) { $item = Nfce::findOrFail($id); __validaObjetoEmpresa($item); $config = Empresa::where('id', $item->empresa_id)->first(); $config = __objetoParaEmissao($config, $item->local_id); $configGeral = ConfigGeral::where('empresa_id', $item->empresa_id)->first(); $html = view('front_box.cupom_nao_fiscal', compact( 'config', 'item', 'configGeral' ))->render(); // 👈 IMPORTANTE $domPdf = new Dompdf([ 'enable_remote' => true, ]); $domPdf->loadHtml($html); // cálculo da altura $height = 360; $height += $item->itens->count() * 11; foreach ($item->itens as $it) { if (strlen($it->descricao()) > 10) { $height += 10; } } foreach ($item->itensServico as $it) { if (strlen($it->servico->nome) > 10) { $height += 10; } } if (!empty($item->observacao)) { $height += 30; } if ($configGeral && !empty($configGeral->mensagem_padrao_impressao_venda)) { $height += 30; } $height += $item->fatura->count() * 5; $domPdf->setPaper([0, 0, 244, $height]); $domPdf->render(); return response($domPdf->output(), 200) ->header('Content-Type', 'application/pdf') ->header( 'Content-Disposition', 'inline; filename="Doc-Auxiliar-'.$item->numero_sequencial.'.pdf"' ); } public function imprimirNaoFiscalHtml($id) { $item = Nfce::findOrFail($id); __validaObjetoEmpresa($item); $config = Empresa::where('id', $item->empresa_id) ->first(); $config = __objetoParaEmissao($config, $item->local_id); $usuario = UsuarioEmpresa::find(get_id_user()); $logo = null; return view('front_box.imprimir', compact('item', 'usuario', 'config')); } public function imprimirA4($id) { $item = Nfce::findOrFail($id); __validaObjetoEmpresa($item); $config = Empresa::where('id', $item->empresa_id)->first(); $config = __objetoParaEmissao($config, $item->local_id); $configGeral = ConfigGeral::where('empresa_id', $item->empresa_id)->first(); $p = view('front_box.imprimir_a4', compact('config', 'item', 'configGeral')); $domPdf = new Dompdf(["enable_remote" => true]); $domPdf->loadHtml($p); $pdf = ob_get_clean(); $domPdf->setPaper("A4"); $domPdf->render(); header("Content-Disposition: ; filename=Pedido.pdf"); $domPdf->stream("Venda #$item->numero_sequencial.pdf", array("Attachment" => false)); } public function mesas(Request $request){ if (!__isCaixaAberto()) { session()->flash("flash_warning", "Abrir caixa antes de continuar!"); return redirect()->route('caixa.create'); } $comanda = null; $numeroComanda = $request->comanda; if($numeroComanda){ $comanda = Pedido::where('comanda', (int)$numeroComanda) ->where('status', 1) ->where('empresa_id', $request->empresa_id)->first(); if($comanda){ $comanda->total = $comanda->itens->sum('sub_total'); $comanda->save(); } } $caixa = __isCaixaAberto(); $categorias = CategoriaProduto::where('empresa_id', request()->empresa_id)->where('status', 1)->get(); $abertura = Caixa::where('usuario_id', get_id_user()) ->where('status', 1) ->first(); $empresa = Empresa::findOrFail(request()->empresa_id); if($empresa == null){ session()->flash("flash_warning", "Configure antes de continuar!"); return redirect()->route('config.index'); } if($empresa->natureza_id_pdv == null){ session()->flash("flash_warning", "Configure a natureza de operação padrão para continuar!"); return redirect()->route('config.index'); } $funcionarios = Funcionario::where('empresa_id', request()->empresa_id) ->where('status', 1)->get(); $config = ConfigGeral::where('empresa_id', request()->empresa_id)->first(); $tiposPagamento = Nfce::tiposPagamento(); // dd($tiposPagamento); if($config != null){ $config->tipos_pagamento_pdv = $config != null && $config->tipos_pagamento_pdv ? json_decode($config->tipos_pagamento_pdv) : []; $temp = []; if(sizeof($config->tipos_pagamento_pdv) > 0){ foreach($tiposPagamento as $key => $t){ if(in_array($t, $config->tipos_pagamento_pdv)){ $temp[$key] = $t; } } $tiposPagamento = $temp; } } if($config == null || $config->numero_inicial_comanda == null || $config->numero_final_comanda == null){ session()->flash("flash_warning", "Defina a numeração inicial e final para as comandas!"); return redirect()->route('config-geral.create'); } $comandas = $this->estadosComanda($config); $produtos = Produto::select('produtos.*', \DB::raw('sum(quantidade) as quantidade')) ->where('empresa_id', request()->empresa_id) ->where('produtos.status', 1) ->where('status', 1) ->leftJoin('item_nfces', 'item_nfces.produto_id', '=', 'produtos.id') ->groupBy('produtos.id') ->orderBy('quantidade', 'desc') ->join('produto_localizacaos', 'produto_localizacaos.produto_id', '=', 'produtos.id') ->where('produto_localizacaos.localizacao_id', $caixa->localizacao->id) ->paginate(12); $local_id = $caixa->local_id; $mesas = Mesa::where('status', 1) ->where('empresa_id', $request->empresa_id) ->orderBy('nome') ->get(); $configCardapio = ConfiguracaoCardapio::where('empresa_id', request()->empresa_id)->first(); return view('front_box.mesas', compact('categorias', 'empresa', 'config', 'funcionarios', 'tiposPagamento', 'comandas', 'produtos', 'local_id', 'abertura', 'caixa', 'comanda', 'numeroComanda', 'mesas', 'configCardapio')); } public function definirMesa(Request $request){ $pedido = Pedido::findOrfail($request->comanda_id); if($pedido){ $pedido->mesa_id = $request->mesa_id; $pedido->cliente_id = $request->cliente_id ?? null; $pedido->cliente_nome = $request->cliente_nome ?? null; $pedido->cliente_fone = $request->cliente_fone ?? null; $pedido->save(); session()->flash("flash_success", "Mesa definida"); }else{ session()->flash("flash_warning", "Algo deu errado!"); } return redirect()->back(); } private function estadosComanda($config){ $comandas = []; for($i=$config->numero_inicial_comanda; $i<=$config->numero_final_comanda; $i++){ $pedido = Pedido::where('empresa_id', request()->empresa_id) ->where('status', 1)->where('comanda', $i)->first(); if($i < 10){ $com = "00$i"; }elseif($i >= 10 && $i < 99){ $com = "0$i"; }else{ $com = "$i"; } $comandas[] = [ 'comanda' => $com, 'mesa' => ($pedido != null && $pedido->_mesa) ? $pedido->_mesa->nome : '', 'status' => $pedido != null ? 1 : 0, 'total' => $pedido != null ? $pedido->total + $pedido->acrescimo - $pedido->desconto : 0, ]; } return $comandas; } }