middleware('permission:ordem_producao_create', ['only' => ['create', 'store']]); $this->middleware('permission:ordem_producao_edit', ['only' => ['edit', 'update']]); $this->middleware('permission:ordem_producao_view', ['only' => ['show', 'index']]); $this->middleware('permission:ordem_producao_delete', ['only' => ['destroy']]); } public function index(Request $request){ $data = OrdemProducao::where('empresa_id', $request->empresa_id) ->orderBy('id', 'desc') ->paginate(__itensPagina()); return view('ordem_producao.index', compact('data')); } public function create(Request $request){ $data = ItemProducao::where('produtos.empresa_id', $request->empresa_id) ->select('item_producaos.*') ->join('produtos', 'produtos.id', '=', 'item_producaos.produto_id') ->where('item_producaos.status', 0) ->get(); // if(sizeof($data) == 0){ // session()->flash("flash_error", "Nenhum item para gerar a ordem de produção!"); // return redirect()->back(); // } // foreach($data as $i){ // foreach($i->itemNfe->itensDimensao as $itd){ // $i->quantidade = $itd->quantidade; // } // } return view('ordem_producao.create', compact('data')); } public function edit(Request $request, $id){ $item = OrdemProducao::findOrFail($id); $data = ItemProducao::where('produtos.empresa_id', $request->empresa_id) ->select('item_producaos.*') ->join('produtos', 'produtos.id', '=', 'item_producaos.produto_id') ->where('item_producaos.status', 0) ->get(); return view('ordem_producao.edit', compact('data', 'item')); } public function show(Request $request, $id){ $item = OrdemProducao::findOrFail($id); $config = EtiquetaConfiguracao::where('empresa_id', $request->empresa_id)->first(); return view('ordem_producao.show', compact('item', 'config')); } public function config(Request $request){ $item = EtiquetaConfiguracao::where('empresa_id', $request->empresa_id)->first(); try{ if($item == null){ EtiquetaConfiguracao::create($request->all()); }else{ $item->fill($request->all())->save(); } session()->flash("flash_success", "Configuração definida!"); }catch(\Exception $e){ session()->flash("flash_error", "Algo deu Errado" . $e->getMessage()); } return redirect()->back(); } public function store(Request $request){ try{ DB::transaction(function () use ($request) { if(!$request->item_select){ session()->flash("flash_error", "Selecione ao menos 1 produto!"); return redirect()->back(); } $lastItem = OrdemProducao::where('empresa_id', $request->empresa_id) ->orderBy('codigo_sequencial', 'desc')->first(); $codigo_sequencial = 1; if($lastItem != null){ $codigo_sequencial = $lastItem->codigo_sequencial+1; } $request->merge([ 'observacao' => $request->observacao ?? '', 'codigo_sequencial' => $codigo_sequencial, 'usuario_id' => get_id_user() ]); // dd($request->all()); $ordem = OrdemProducao::create($request->all()); for($i=0; $iitem_select); $i++){ $itemProducao = ItemProducao::find($request->item_select[$i]); if($itemProducao){ $itemProducao->status = 1; $itemProducao->save(); ItemOrdemProducao::create([ 'ordem_producao_id' => $ordem->id, 'item_producao_id' => $itemProducao->id, 'produto_id' => $itemProducao->produto_id, 'quantidade' => $request->qtd[$i], 'status' => 0, 'observacao' => $request->observacao_item[$i] ]); } } $i = 0; for($j=0; $jitem_select); $j++){ if(isset($request->produto_id[$i])){ $dataItem = [ 'ordem_producao_id' => $ordem->id, 'item_producao_id' => null, 'produto_id' => $request->produto_id[$i], 'cliente_id' => $request->cliente_id[$i], 'quantidade' => $request->qtd[$i], 'status' => 0, 'observacao' => $request->observacao_item[$i], 'numero_pedido' => $request->numero_pedido[$i], ]; ItemOrdemProducao::create($dataItem); $i++; } } session()->flash("flash_success", "Ordem de Produção criada com sucesso"); }); return redirect()->route('ordem-producao.index'); }catch(\Exception $e){ dd($e->getMessage()); session()->flash("flash_error", "Algo deu Errado" . $e->getMessage()); return redirect()->back(); } } public function update(Request $request, $id){ try{ $item = OrdemProducao::findOrFail($id); $request->merge([ 'observacao' => $request->observacao ?? '', ]); $item->fill($request->all())->save(); foreach($item->itens as $i){ $itemProducao = $i->itemProducao; if($itemProducao){ $itemProducao->status = 0; $itemProducao->save(); } } $item->itens()->delete(); for($i=0; $iitem_select); $i++){ $itemProducao = ItemProducao::find($request->item_select[$i]); if($itemProducao){ $itemProducao->status = 1; $itemProducao->save(); ItemOrdemProducao::create([ 'ordem_producao_id' => $item->id, 'item_producao_id' => $itemProducao->id, 'produto_id' => $itemProducao->produto_id, 'quantidade' => $request->qtd[$i], 'status' => 0, 'observacao' => $request->observacao_item[$i] ]); }else{ $dataItem = [ 'ordem_producao_id' => $item->id, 'item_producao_id' => null, 'produto_id' => $request->produto_id[$i], 'cliente_id' => $request->cliente_id[$i], 'quantidade' => $request->qtd[$i], 'status' => 0, 'observacao' => $request->observacao_item[$i], 'numero_pedido' => $request->numero_pedido[$i], ]; ItemOrdemProducao::create($dataItem); } } session()->flash("flash_success", "Ordem de Produção atualizada com sucesso"); return redirect()->route('ordem-producao.index'); }catch(\Exception $e){ session()->flash("flash_error", "Algo deu Errado" . $e->getMessage()); return redirect()->back(); } } public function updateEstado(Request $request, $id){ $item = OrdemProducao::findOrFail($id); $item->estado = $request->estado; $item->save(); session()->flash("flash_success", "Estado alterado!"); return redirect()->back(); } public function alterarStatusItem($id){ $item = ItemOrdemProducao::findOrFail($id); $item->status = !$item->status; $item->save(); session()->flash("flash_success", "Status do item alterado!"); return redirect()->back(); } public function destroy($id) { $item = OrdemProducao::findOrFail($id); try { foreach($item->itens as $i){ $itemProducao = $i->itemProducao; if($itemProducao){ $itemProducao->status = 0; $itemProducao->save(); } } $item->itens()->delete(); $item->delete(); session()->flash("flash_success", "Ordem de produção removida"); } catch (\Exception $e) { session()->flash("flash_error", "Algo deu errado" . $e->getMessage()); } return redirect()->back(); } public function imprimirEtiquetas($id){ $item = OrdemProducao::findOrFail($id); $empresa = Empresa::findOrFail(request()->empresa_id); $config = EtiquetaConfiguracao::where('empresa_id', $empresa->id)->first(); // $p = view('ordem_producao.etiqueta', compact('item', 'empresa')); // $domPdf = new Dompdf(["enable_remote" => true]); // $domPdf->loadHtml($p); // $pdf = ob_get_clean(); // $height = 0; // foreach($item->itens as $i){ // $height += $i->quantidade * 300; // } return view('ordem_producao.etiqueta', compact('item', 'empresa', 'config')); // $domPdf->set_paper(array(0,0,204,$height)); // $domPdf->render(); // $domPdf->stream("Etiqueta produção.pdf", array("Attachment" => false)); // exit(); } public function imprimir($id) { $item = OrdemProducao::findOrFail($id); $config = Empresa::findOrFail(request()->empresa_id); $html = view('ordem_producao.imprimir_detalhe', compact('item', 'config'))->render(); $domPdf = new Dompdf(["enable_remote" => true]); $domPdf->loadHtml($html); $domPdf->setPaper("A4"); $domPdf->render(); return $domPdf->stream("Ordem de produção.pdf", ["Attachment" => false]); } // public function imprimir($id){ // $item = OrdemProducao::findOrFail($id); // $config = Empresa::findOrFail(request()->empresa_id); // $p = view('ordem_producao.imprimir', compact('item', 'config')); // $domPdf = new Dompdf(["enable_remote" => true]); // $domPdf->loadHtml($p); // $pdf = ob_get_clean(); // $domPdf->setPaper("A4", "landscape"); // $domPdf->render(); // $domPdf->stream("Ordem de produção.pdf", array("Attachment" => false)); // exit(); // } }