util = $util; $this->middleware('permission:caixa_view', ['only' => ['show', 'index']]); } private function setNumeroSequencial(){ $data = Caixa::where('empresa_id', request()->empresa_id) ->where('numero_sequencial', null) ->get(); $last = Caixa::where('empresa_id', request()->empresa_id) ->orderBy('numero_sequencial', 'desc') ->where('numero_sequencial', '>', 0)->first(); $numero = $last != null ? $last->numero_sequencial : 0; $numero++; foreach($data as $d){ $d->numero_sequencial = $numero; $d->save(); $numero++; } } public function index() { $this->setNumeroSequencial(); $item = Caixa::where('usuario_id', Auth::user()->id)->where('status', 1)->first(); if ($item == null) { session()->flash('flash_warning', 'Não há caixa aberto no momento!'); return redirect()->route('caixa.create'); } $valor_abertura = $item->valor_abertura; $somaTiposPagamento = []; $contas = []; $idsReceber = ContaReceber::where('empresa_id', request()->empresa_id)->pluck('nfce_id')->toArray(); // dd($idsReceber); $nfce = Nfce::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id) ->where('estado', '!=', 'cancelado') ->get(); $nfe = Nfe::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id)->where('tpNF', 1) ->where('orcamento', 0) ->where('finNFe', 1) ->where('estado', '!=', 'cancelado') ->get(); $contasReceber = ContaReceber::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id) ->where('status', 1)->get(); $contasPagar = ContaPagar::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id) ->where('status', 1)->get(); $trocas = Troca::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id) ->get(); $trocasPagasPorCliente = Troca::where('empresa_id', request()->empresa_id) ->where('caixa_id', $item->id) ->whereColumn('valor_troca', '>', 'valor_original') ->selectRaw('SUM(ABS(valor_troca - valor_original)) as total') ->value('total'); $trocasPagasAoCliente = Troca::where('empresa_id', request()->empresa_id) ->where('caixa_id', $item->id) ->whereColumn('valor_troca', '<', 'valor_original') ->selectRaw('SUM(ABS(valor_original - valor_troca)) as total') ->value('total'); $ordens = OrdemServico::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id) ->get(); // dd($ordens); $compras = Nfe::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id)->where('tpNF', 0) ->where('orcamento', 0) ->where('finNFe', 1) ->get(); $totalVendas = Nfe::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id)->where('tpNF', 1) ->where('orcamento', 0) ->where('finNFe', 1) ->join('fatura_nves', 'fatura_nves.nfe_id', '=', 'nves.id') ->sum('total'); $totalVendas += Nfce::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id) ->where('estado', '!=', 'cancelado') // ->whereNotIn('id', $idsReceber) ->sum('total'); // $vendas = $this->agrupaDados($nfce, $nfe, $ordens, $compras); $nfce->map(function($d){ $d->tipo = 'PDV'; return $d; }); $nfe->map(function($d){ $d->tipo = 'Pedido'; return $d; }); $vendas = $nfce->concat($nfe)->sortByDesc('created_at')->values(); $somaTiposPagamento = $this->somaTiposPagamento($vendas); $somaServicos = ItemServicoNfce::join('nfces', 'nfces.id', '=', 'item_servico_nfces.nfce_id') ->where('nfces.empresa_id', request()->empresa_id)->where('nfces.caixa_id', $item->id) ->sum('sub_total') + OrdemServico::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id) ->sum('valor'); $suprimentos = SuprimentoCaixa::where('caixa_id', $item->id)->get(); $sangrias = SangriaCaixa::where('caixa_id', $item->id)->get(); $somaVendas = $vendas->sum('total'); $somaCompras = $compras->sum('total'); $somaContasReceber = $contasReceber->sum('valor_recebido'); $somaContasPagar = $contasPagar->sum('valor_pago'); $somaSuprimentos = $suprimentos->sum('valor'); $somaSangrias = $sangrias->sum('valor'); $somaPendentesCrediario = FaturaNfe::join('nves', 'nves.id', '=', 'fatura_nves.nfe_id') ->where('nves.empresa_id', request()->empresa_id) ->where('nves.caixa_id', $item->id) ->where('fatura_nves.tipo_pagamento', '06') ->sum('fatura_nves.valor'); $somaPendentesCrediario += FaturaNfce::join('nfces', 'nfces.id', '=', 'fatura_nfces.nfce_id') ->where('nfces.empresa_id', request()->empresa_id) ->where('nfces.caixa_id', $item->id) ->where('fatura_nfces.tipo_pagamento', '06') ->sum('fatura_nfces.valor'); $somaPendentBoleto = FaturaNfe::join('nves', 'nves.id', '=', 'fatura_nves.nfe_id') ->where('nves.empresa_id', request()->empresa_id) ->where('nves.caixa_id', $item->id) ->where('fatura_nves.tipo_pagamento', '15') ->sum('fatura_nves.valor'); $somaPendentBoleto += FaturaNfce::join('nfces', 'nfces.id', '=', 'fatura_nfces.nfce_id') ->where('nfces.empresa_id', request()->empresa_id) ->where('nfces.caixa_id', $item->id) ->where('fatura_nfces.tipo_pagamento', '15') ->sum('fatura_nfces.valor'); $somaPendentesCreditoLoja = FaturaNfe::join('nves', 'nves.id', '=', 'fatura_nves.nfe_id') ->where('nves.empresa_id', request()->empresa_id) ->where('nves.caixa_id', $item->id) ->where('fatura_nves.tipo_pagamento', '05') ->sum('fatura_nves.valor'); $somaPendentesCreditoLoja += FaturaNfce::join('nfces', 'nfces.id', '=', 'fatura_nfces.nfce_id') ->where('nfces.empresa_id', request()->empresa_id) ->where('nfces.caixa_id', $item->id) ->where('fatura_nfces.tipo_pagamento', '05') ->sum('fatura_nfces.valor'); if ($item != null) { $contasEmpresa = ContaEmpresa::where('empresa_id', request()->empresa_id) ->where('status', 1) ->get(); return view('caixa.index', compact( 'item', 'vendas', 'somaTiposPagamento', 'valor_abertura', 'somaServicos', 'totalVendas', 'compras', 'suprimentos', 'sangrias', 'trocas', 'contasReceber', 'contasPagar', 'contasEmpresa', 'somaVendas', 'somaCompras', 'somaContasReceber', 'somaSuprimentos', 'trocasPagasPorCliente', 'trocasPagasAoCliente', 'somaSangrias', 'somaContasPagar', 'somaPendentesCrediario', 'somaPendentBoleto', 'somaPendentesCreditoLoja', )); } else { session()->flash('flash_warning', 'Não há caixa aberto no momento!'); return redirect()->back(); } } private function agrupaDados($nfce, $nfe, $ordens, $compras) { $temp = []; foreach ($nfe as $v) { $v->tipo = 'Pedido'; $v->receita = 1; array_push($temp, $v); } foreach ($nfce as $v) { $v->tipo = 'PDV'; $v->receita = 1; array_push($temp, $v); } if($ordens != null){ foreach ($ordens as $v) { $v->tipo = 'OS'; $v->receita = 1; array_push($temp, $v); } } // if($compras != null){ // foreach ($compras as $v) { // $v->tipo = 'Compra'; // $v->receita = 0; // array_push($temp, $v); // } // } usort($temp, function($a, $b){ return $a['created_at'] < $b['created_at'] ? 1 : -1; }); return $temp; } private function agrupaContas($pagar, $receber) { $temp = []; foreach ($pagar as $c) { $c->tipo = 'Conta Paga'; array_push($temp, $c); } foreach ($receber as $c) { $c->tipo = 'Conta Recebida'; array_push($temp, $c); } return $temp; } private function somaTiposPagamento($vendas) { $tipos = $this->preparaTipos(); foreach ($vendas as $v) { if ($v->estado == 'cancelado') continue; $trocoAplicado = false; if ($v->fatura && count($v->fatura) > 0) { foreach ($v->fatura as $f) { $tipo = trim($f->tipo_pagamento); if (!isset($tipos[$tipo])) { continue; } $valor = $f->valor; if ($tipo == '01' && !$trocoAplicado) { $valor -= $v->troco; if ($valor < 0) { $valor = 0; } $trocoAplicado = true; } $tipos[$tipo] += $valor; } } } return $tipos; } private function somaTiposContas($contas) { $tipos = $this->preparaTipos(); foreach ($contas as $c) { if ($c->status == 1) { if(isset($tipos[trim($c->tipo_pagamento)])){ $tipos[trim($c->tipo_pagamento)] += $c->valor_integral; } } } return $tipos; } private function preparaTipos() { $temp = []; foreach (Nfce::tiposPagamento() as $key => $tp) { $temp[$key] = 0; } return $temp; } /** * Show the form for creating a new resource. */ public function create() { $item = Caixa::where('usuario_id', Auth::user()->id)->where('status', 1)->first(); return view('caixa.create', compact('item')); } private function getLastNumeroSequencial($empresa_id){ $last = Caixa::where('empresa_id', $empresa_id) ->orderBy('numero_sequencial', 'desc') ->where('numero_sequencial', '>', 0)->first(); $numero = $last != null ? $last->numero_sequencial : 0; $numero++; return $numero; } public function store(Request $request) { try { $request->merge([ 'usuario_id' => Auth::user()->id, 'valor_abertura' => __convert_value_bd($request->valor_abertura), 'observacao' => $request->observacao ?? '', 'status' => 1, 'valor_fechamento' => 0, 'numero_sequencial' => $this->getLastNumeroSequencial($request->empresa_id) ]); $item = Caixa::create($request->all()); $descricaoLog = $item->usuario->name . " | CAIXA ABERTO - abertura: " . __data_pt($item->created_at) . " - valor abertura: " . __moeda($item->valor_abertura); __createLog($request->empresa_id, 'Caixa', 'cadastrar', $descricaoLog); session()->flash('flash_success', 'Caixa aberto com sucesso!'); } catch (\Exception $e) { // echo $e->getMessage() . '
' . $e->getLine(); // die; __createLog($request->empresa_id, 'Caixa', 'erro', $e->getMessage()); session()->flash('flash_error', 'Não foi possível abrir o caixa' . $e->getMessage()); } return redirect()->route('caixa.index'); } public function show($id) { $item = Caixa::FindOrFail($id); if ($item == null) { session()->flash('flash_warning', 'Não há caixa aberto no momento!'); return redirect()->route('caixa.create'); } $valor_abertura = $item->valor_abertura; $somaTiposPagamento = []; $contas = []; $idsReceber = ContaReceber::where('empresa_id', request()->empresa_id)->pluck('nfce_id')->toArray(); // dd($idsReceber); $nfce = Nfce::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id) ->where('estado', '!=', 'cancelado') ->get(); $nfe = Nfe::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id)->where('tpNF', 1) ->where('orcamento', 0) ->where('finNFe', 1) ->where('estado', '!=', 'cancelado') ->get(); $contasReceber = ContaReceber::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id) ->where('status', 1)->get(); $contasPagar = ContaPagar::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id) ->where('status', 1)->get(); $trocas = Troca::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id) ->get(); $trocasPagasPorCliente = Troca::where('empresa_id', request()->empresa_id) ->where('caixa_id', $item->id) ->whereColumn('valor_troca', '>', 'valor_original') ->selectRaw('SUM(ABS(valor_troca - valor_original)) as total') ->value('total'); $trocasPagasAoCliente = Troca::where('empresa_id', request()->empresa_id) ->where('caixa_id', $item->id) ->whereColumn('valor_troca', '<', 'valor_original') ->selectRaw('SUM(ABS(valor_original - valor_troca)) as total') ->value('total'); $ordens = OrdemServico::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id) ->get(); // dd($ordens); $compras = Nfe::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id)->where('tpNF', 0) ->where('orcamento', 0) ->where('finNFe', 1) ->get(); $totalVendas = Nfe::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id)->where('tpNF', 1) ->where('orcamento', 0) ->where('finNFe', 1) ->join('fatura_nves', 'fatura_nves.nfe_id', '=', 'nves.id') ->sum('total'); $totalVendas += Nfce::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id) ->where('estado', '!=', 'cancelado') // ->whereNotIn('id', $idsReceber) ->sum('total'); // $vendas = $this->agrupaDados($nfce, $nfe, $ordens, $compras); $nfce->map(function($d){ $d->tipo = 'PDV'; return $d; }); $nfe->map(function($d){ $d->tipo = 'Pedido'; return $d; }); $vendas = $nfce->concat($nfe)->sortByDesc('created_at')->values(); $somaTiposPagamento = $this->somaTiposPagamento($vendas); $somaServicos = ItemServicoNfce::join('nfces', 'nfces.id', '=', 'item_servico_nfces.nfce_id') ->where('nfces.empresa_id', request()->empresa_id)->where('nfces.caixa_id', $item->id) ->sum('sub_total') + OrdemServico::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id) ->sum('valor'); $suprimentos = SuprimentoCaixa::where('caixa_id', $item->id)->get(); $sangrias = SangriaCaixa::where('caixa_id', $item->id)->get(); $somaVendas = $vendas->sum('total'); $somaCompras = $compras->sum('total'); $somaContasReceber = $contasReceber->sum('valor_recebido'); $somaContasPagar = $contasPagar->sum('valor_pago'); $somaSuprimentos = $suprimentos->sum('valor'); $somaSangrias = $sangrias->sum('valor'); $somaPendentesCrediario = FaturaNfe::join('nves', 'nves.id', '=', 'fatura_nves.nfe_id') ->where('nves.empresa_id', request()->empresa_id) ->where('nves.caixa_id', $item->id) ->where('fatura_nves.tipo_pagamento', '06') ->sum('fatura_nves.valor'); $somaPendentesCrediario += FaturaNfce::join('nfces', 'nfces.id', '=', 'fatura_nfces.nfce_id') ->where('nfces.empresa_id', request()->empresa_id) ->where('nfces.caixa_id', $item->id) ->where('fatura_nfces.tipo_pagamento', '06') ->sum('fatura_nfces.valor'); $somaPendentBoleto = FaturaNfe::join('nves', 'nves.id', '=', 'fatura_nves.nfe_id') ->where('nves.empresa_id', request()->empresa_id) ->where('nves.caixa_id', $item->id) ->where('fatura_nves.tipo_pagamento', '15') ->sum('fatura_nves.valor'); $somaPendentBoleto += FaturaNfce::join('nfces', 'nfces.id', '=', 'fatura_nfces.nfce_id') ->where('nfces.empresa_id', request()->empresa_id) ->where('nfces.caixa_id', $item->id) ->where('fatura_nfces.tipo_pagamento', '15') ->sum('fatura_nfces.valor'); $somaPendentesCreditoLoja = FaturaNfe::join('nves', 'nves.id', '=', 'fatura_nves.nfe_id') ->where('nves.empresa_id', request()->empresa_id) ->where('nves.caixa_id', $item->id) ->where('fatura_nves.tipo_pagamento', '05') ->sum('fatura_nves.valor'); $somaPendentesCreditoLoja += FaturaNfce::join('nfces', 'nfces.id', '=', 'fatura_nfces.nfce_id') ->where('nfces.empresa_id', request()->empresa_id) ->where('nfces.caixa_id', $item->id) ->where('fatura_nfces.tipo_pagamento', '05') ->sum('fatura_nfces.valor'); if ($item != null) { $contasEmpresa = ContaEmpresa::where('empresa_id', request()->empresa_id) ->where('status', 1) ->get(); return view('caixa.show', compact( 'item', 'vendas', 'somaTiposPagamento', 'valor_abertura', 'somaServicos', 'totalVendas', 'compras', 'suprimentos', 'sangrias', 'trocas', 'contasReceber', 'contasPagar', 'contasEmpresa', 'somaVendas', 'somaCompras', 'somaContasReceber', 'somaSuprimentos', 'trocasPagasPorCliente', 'trocasPagasAoCliente', 'somaSangrias', 'somaContasPagar', 'somaPendentesCrediario', 'somaPendentBoleto', 'somaPendentesCreditoLoja', )); } else { session()->flash('flash_warning', 'Não há caixa aberto no momento!'); return redirect()->back(); } } public function fecharEmpresa($id) { $item = Caixa::FindOrFail($id); if ($item == null) { session()->flash('flash_warning', 'Não há caixa aberto no momento!'); return redirect()->route('caixa.create'); } $valor_abertura = $item->valor_abertura; $somaTiposPagamento = []; $contas = []; $idsReceber = ContaReceber::where('empresa_id', request()->empresa_id)->pluck('nfce_id')->toArray(); // dd($idsReceber); $nfce = Nfce::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id) ->where('estado', '!=', 'cancelado') ->get(); $nfe = Nfe::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id)->where('tpNF', 1) ->where('orcamento', 0) ->where('finNFe', 1) ->where('estado', '!=', 'cancelado') ->get(); $contasReceber = ContaReceber::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id) ->where('status', 1)->get(); $contasPagar = ContaPagar::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id) ->where('status', 1)->get(); $trocas = Troca::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id) ->get(); $trocasPagasPorCliente = Troca::where('empresa_id', request()->empresa_id) ->where('caixa_id', $item->id) ->whereColumn('valor_troca', '>', 'valor_original') ->selectRaw('SUM(ABS(valor_troca - valor_original)) as total') ->value('total'); $trocasPagasAoCliente = Troca::where('empresa_id', request()->empresa_id) ->where('caixa_id', $item->id) ->whereColumn('valor_troca', '<', 'valor_original') ->selectRaw('SUM(ABS(valor_original - valor_troca)) as total') ->value('total'); $ordens = OrdemServico::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id) ->get(); // dd($ordens); $compras = Nfe::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id)->where('tpNF', 0) ->where('orcamento', 0) ->where('finNFe', 1) ->get(); $totalVendas = Nfe::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id)->where('tpNF', 1) ->where('orcamento', 0) ->where('finNFe', 1) ->join('fatura_nves', 'fatura_nves.nfe_id', '=', 'nves.id') ->sum('total'); $totalVendas += Nfce::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id) ->where('estado', '!=', 'cancelado') // ->whereNotIn('id', $idsReceber) ->sum('total'); // $vendas = $this->agrupaDados($nfce, $nfe, $ordens, $compras); $nfce->map(function($d){ $d->tipo = 'PDV'; return $d; }); $nfe->map(function($d){ $d->tipo = 'Pedido'; return $d; }); $vendas = $nfce->concat($nfe)->sortByDesc('created_at')->values(); $somaTiposPagamento = $this->somaTiposPagamento($vendas); $somaServicos = ItemServicoNfce::join('nfces', 'nfces.id', '=', 'item_servico_nfces.nfce_id') ->where('nfces.empresa_id', request()->empresa_id)->where('nfces.caixa_id', $item->id) ->sum('sub_total') + OrdemServico::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id) ->sum('valor'); $suprimentos = SuprimentoCaixa::where('caixa_id', $item->id)->get(); $sangrias = SangriaCaixa::where('caixa_id', $item->id)->get(); $somaVendas = $vendas->sum('total'); $somaCompras = $compras->sum('total'); $somaContasReceber = $contasReceber->sum('valor_recebido'); $somaContasPagar = $contasPagar->sum('valor_pago'); $somaSuprimentos = $suprimentos->sum('valor'); $somaSangrias = $sangrias->sum('valor'); $somaPendentesCrediario = FaturaNfe::join('nves', 'nves.id', '=', 'fatura_nves.nfe_id') ->where('nves.empresa_id', request()->empresa_id) ->where('nves.caixa_id', $item->id) ->where('fatura_nves.tipo_pagamento', '06') ->sum('fatura_nves.valor'); $somaPendentesCrediario += FaturaNfce::join('nfces', 'nfces.id', '=', 'fatura_nfces.nfce_id') ->where('nfces.empresa_id', request()->empresa_id) ->where('nfces.caixa_id', $item->id) ->where('fatura_nfces.tipo_pagamento', '06') ->sum('fatura_nfces.valor'); $somaPendentBoleto = FaturaNfe::join('nves', 'nves.id', '=', 'fatura_nves.nfe_id') ->where('nves.empresa_id', request()->empresa_id) ->where('nves.caixa_id', $item->id) ->where('fatura_nves.tipo_pagamento', '15') ->sum('fatura_nves.valor'); $somaPendentBoleto += FaturaNfce::join('nfces', 'nfces.id', '=', 'fatura_nfces.nfce_id') ->where('nfces.empresa_id', request()->empresa_id) ->where('nfces.caixa_id', $item->id) ->where('fatura_nfces.tipo_pagamento', '15') ->sum('fatura_nfces.valor'); $somaPendentesCreditoLoja = FaturaNfe::join('nves', 'nves.id', '=', 'fatura_nves.nfe_id') ->where('nves.empresa_id', request()->empresa_id) ->where('nves.caixa_id', $item->id) ->where('fatura_nves.tipo_pagamento', '05') ->sum('fatura_nves.valor'); $somaPendentesCreditoLoja += FaturaNfce::join('nfces', 'nfces.id', '=', 'fatura_nfces.nfce_id') ->where('nfces.empresa_id', request()->empresa_id) ->where('nfces.caixa_id', $item->id) ->where('fatura_nfces.tipo_pagamento', '05') ->sum('fatura_nfces.valor'); if ($item != null) { $contasEmpresa = ContaEmpresa::where('empresa_id', request()->empresa_id) ->where('status', 1) ->get(); return view('caixa.fechar_empresa', compact( 'item', 'vendas', 'somaTiposPagamento', 'valor_abertura', 'somaServicos', 'totalVendas', 'compras', 'suprimentos', 'sangrias', 'trocas', 'contasReceber', 'contasPagar', 'contasEmpresa', 'somaVendas', 'somaCompras', 'somaContasReceber', 'somaSuprimentos', 'trocasPagasPorCliente', 'trocasPagasAoCliente', 'somaSangrias', 'somaContasPagar', 'somaPendentesCrediario', 'somaPendentBoleto', 'somaPendentesCreditoLoja', )); } else { session()->flash('flash_warning', 'Não há caixa aberto no momento!'); return redirect()->back(); } } /** * Display the specified resource. */ // public function show(string $id) // { // $item = Caixa::FindOrFail($id); // $vendas = []; // $somaTiposPagamento = []; // $nfce = Nfce::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id) // ->where('estado', '!=', 'cancelado') // // ->where('tipo_pagamento', '!=', '06') // ->get(); // // $nfe = Nfe::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id) // // ->where('tpNF', 1) // // ->get(); // $nfe = Nfe::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id)->where('tpNF', 1) // ->where('orcamento', 0) // ->where('finNFe', 1) // ->where('estado', '!=', 'cancelado') // ->get(); // $ordens = OrdemServico::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id) // ->get(); // $compras = Nfe::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id)->where('tpNF', 0) // ->where('orcamento', 0) // ->where('finNFe', 1) // ->where('estado', '!=', 'cancelado') // ->get(); // $totalCompras = Nfe::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id)->where('tpNF', 0) // ->where('orcamento', 0) // ->where('finNFe', 1) // ->sum('total'); // $totalVendas = Nfe::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id)->where('tpNF', 1) // ->where('orcamento', 0) // ->where('finNFe', 1) // ->where('estado', '!=', 'cancelado') // ->join('fatura_nves', 'fatura_nves.nfe_id', '=', 'nves.id') // ->sum('total'); // $totalVendas += Nfce::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id) // ->where('estado', '!=', 'cancelado') // // ->where('tipo_pagamento', '!=', '06') // ->sum('total'); // $data = $this->agrupaDados($nfce, $nfe, $ordens, $compras); // $somaTiposPagamento = $this->somaTiposPagamento($data); // $suprimentos = []; // $sangrias = []; // $contas = []; // $pagar = ContaPagar::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id)->get(); // $receber = ContaReceber::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id)->get(); // $somaTiposContas = $this->somaTiposContas($contas); // if ($item != null) { // $suprimentos = SuprimentoCaixa::where('caixa_id', $item->id)->get(); // $sangrias = SangriaCaixa::where('caixa_id', $item->id)->get(); // } // $somaServicos = ItemServicoNfce::join('nfces', 'nfces.id', '=', 'item_servico_nfces.nfce_id') // ->where('nfces.empresa_id', request()->empresa_id)->where('nfces.caixa_id', $item->id) // ->sum('sub_total') + // OrdemServico::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id) // ->sum('valor'); // return view('caixa.show', compact( // 'item', // 'data', // 'somaTiposPagamento', // 'suprimentos', // 'totalCompras', // 'totalVendas', // 'sangrias', // 'contasReceber', // 'somaServicos' // )); // } // public function fecharEmpresa(string $id) // { // $item = Caixa::FindOrFail($id); // $somaTiposPagamento = []; // $nfce = Nfce::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id) // ->where('estado', '!=', 'cancelado') // // ->where('tipo_pagamento', '!=', '06') // ->get(); // // $nfe = Nfe::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id) // // ->where('tpNF', 1) // // ->get(); // $nfe = Nfe::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id)->where('tpNF', 1) // ->where('orcamento', 0) // ->where('finNFe', 1) // ->where('estado', '!=', 'cancelado') // ->get(); // $ordens = OrdemServico::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id) // ->get(); // $compras = Nfe::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id)->where('tpNF', 0) // ->where('orcamento', 0) // ->where('finNFe', 1) // ->get(); // $data = $this->agrupaDados($nfce, $nfe, $ordens, $compras); // $somaTiposPagamento = $this->somaTiposPagamento($data); // $suprimentos = []; // $sangrias = []; // $contas = []; // $pagar = ContaPagar::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id)->get(); // $receber = ContaReceber::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id)->get(); // $contas = $this->agrupaContas($pagar, $receber); // $somaTiposContas = $this->somaTiposContas($contas); // if ($item != null) { // $suprimentos = SuprimentoCaixa::where('caixa_id', $item->id)->get(); // $sangrias = SangriaCaixa::where('caixa_id', $item->id)->get(); // } // $somaServicos = ItemServicoNfce::join('nfces', 'nfces.id', '=', 'item_servico_nfces.nfce_id') // ->where('nfces.empresa_id', request()->empresa_id)->where('nfces.caixa_id', $item->id) // ->sum('sub_total') + // OrdemServico::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id) // ->sum('valor'); // $valor_abertura = $item->valor_abertura; // $contasEmpresa = ContaEmpresa::where('empresa_id', request()->empresa_id) // ->where('status', 1)->get(); // $totalVendas = Nfe::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id)->where('tpNF', 1) // ->where('orcamento', 0) // ->where('finNFe', 1) // ->join('fatura_nves', 'fatura_nves.nfe_id', '=', 'nves.id') // ->sum('total'); // $totalVendas += Nfce::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id) // ->where('estado', '!=', 'cancelado') // // ->where('tipo_pagamento', '!=', '06') // ->sum('total'); // $totalCompras = Nfe::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id)->where('tpNF', 0) // ->where('orcamento', 0) // ->where('finNFe', 1) // ->where('estado', '!=', 'cancelado') // ->sum('total'); // return view('caixa.fechar_empresa', compact( // 'item', // 'data', // 'somaTiposPagamento', // 'suprimentos', // 'sangrias', // 'contas', // 'receber', // 'pagar', // 'totalVendas', // 'totalCompras', // 'contasEmpresa', // 'valor_abertura', // 'somaServicos' // )); // } /** * Show the form for editing the specified resource. */ public function edit(string $id) { // } /** * Update the specified resource in storage. */ public function update(Request $request, string $id) { // } /** * Remove the specified resource from storage. */ public function destroy(string $id) { $item = Caixa::findOrFail($id); __validaObjetoEmpresa($item); try { $descricaoLog = "Caixa do usuário " . $item->usuario->name; $item->delete(); __createLog(request()->empresa_id, 'Caixa', 'excluir', $descricaoLog); session()->flash("flash_success", "Caixa removido com sucesso!"); } catch (\Exception $e) { __createLog(request()->empresa_id, 'Caixa', 'erro', $e->getMessage()); session()->flash("flash_error", 'Algo deu errado: '. $e->getMessage()); } return redirect()->back(); } public function list() { $this->setNumeroSequencial(); $data = Caixa::where('empresa_id', request()->empresa_id) ->orderBy('id', 'desc')->get(); return view('caixa.list', compact('data')); } public function fechar(Request $request) { $item = Caixa::findOrFail($request->caixa_id); try { $item->status = 0; $item->valor_fechamento = $request->valor_fechamento; $item->valor_dinheiro = $request->valor_dinheiro ? __convert_value_bd($request->valor_dinheiro) : 0; $item->valor_cheque = $request->valor_cheque ? __convert_value_bd($request->valor_cheque) : 0; $item->valor_outros = $request->valor_outros ? __convert_value_bd($request->valor_outros) : 0; $item->observacao .= " " . $request->observacao ?? ''; $item->data_fechamento = date('Y-m-d h:i:s'); $item->save(); $descricaoLog = $item->usuario->name . " | CAIXA FECHADO - abertura: " . __data_pt($item->created_at) . " - fechamento: " . __data_pt($item->data_fechamento); __createLog($request->empresa_id, 'Caixa', 'editar', $descricaoLog); session()->flash('flash_success', 'Caixa Fechado'); } catch (\Exception $e) { // echo $e->getMessage() . '
' . $e->getLine(); // die; __createLog($request->empresa_id, 'Caixa', 'erro', $e->getMessage()); session()->flash('flash_error', 'Não foi possível fechar'); } return redirect()->route('caixa.list'); } public function imprimir($id) { $item = Caixa::findOrFail($id); $config = Empresa::where('id', request()->empresa_id)->first(); $nfce = Nfce::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id) ->where('estado', '!=', 'cancelado') // ->where('tipo_pagamento', '!=', '06') ->get(); $nfe = Nfe::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id) ->where('finNFe', 1) ->where('estado', '!=', 'cancelado') ->get(); $ordens = OrdemServico::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id) ->get(); $compras = Nfe::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id)->where('tpNF', 0) ->where('orcamento', 0) ->where('finNFe', 1) ->get(); $data = $this->agrupaDados($nfce, $nfe, $ordens, $compras); $somaTiposPagamento = $this->somaTiposPagamento($data); $usuario = User::findOrFail(Auth::user()->id); $sangrias = SangriaCaixa::where('caixa_id', $item->id)->get(); $suprimentos = SuprimentoCaixa::where('caixa_id', $item->id)->get(); $somaServicos = ItemServicoNfce::join('nfces', 'nfces.id', '=', 'item_servico_nfces.nfce_id') ->where('nfces.empresa_id', request()->empresa_id)->where('nfces.caixa_id', $item->id) ->sum('sub_total') + OrdemServico::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id) ->sum('valor'); $totalVendas = Nfe::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id)->where('tpNF', 1) ->where('orcamento', 0) ->where('finNFe', 1) ->join('fatura_nves', 'fatura_nves.nfe_id', '=', 'nves.id') ->sum('total'); $totalVendas += Nfce::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id) ->where('estado', '!=', 'cancelado') // ->where('tipo_pagamento', '!=', '06') ->sum('total'); $totalCompras = Nfe::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id)->where('tpNF', 0) ->where('orcamento', 0) ->where('finNFe', 1) ->where('estado', '!=', 'cancelado') ->sum('total'); $produtos = $this->totalizaProdutos($data); $p = view('caixa.imprimir', compact( 'item', 'data', 'usuario', 'somaTiposPagamento', 'config', 'sangrias', 'somaServicos', 'suprimentos', 'totalCompras', 'totalVendas', 'produtos' )); $domPdf = new Dompdf(["enable_remote" => true]); $domPdf->loadHtml($p); $pdf = ob_get_clean(); $domPdf->setPaper("A4", "landscape"); $domPdf->render(); $domPdf->stream("Relatório de caixa.pdf", array("Attachment" => false)); } public function imprimir80($id) { $item = Caixa::findOrFail($id); $config = Empresa::where('id', request()->empresa_id)->first(); $nfce = Nfce::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id) ->where('estado', '!=', 'cancelado') // ->where('tipo_pagamento', '!=', '06') ->get(); $nfe = Nfe::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id) ->where('estado', '!=', 'cancelado') ->where('finNFe', 1) ->get(); $ordens = OrdemServico::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id) ->get(); $compras = Nfe::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id)->where('tpNF', 0) ->where('orcamento', 0) ->where('finNFe', 1) ->get(); $data = $this->agrupaDados($nfce, $nfe, $ordens, $compras); $somaTiposPagamento = $this->somaTiposPagamento($data); $usuario = User::findOrFail(Auth::user()->id); $sangrias = SangriaCaixa::where('caixa_id', $item->id)->get(); $totalVendas = Nfe::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id)->where('tpNF', 1) ->where('orcamento', 0) ->where('finNFe', 1) ->join('fatura_nves', 'fatura_nves.nfe_id', '=', 'nves.id') ->sum('total'); $totalVendas += Nfce::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id) ->where('estado', '!=', 'cancelado') // ->where('tipo_pagamento', '!=', '06') ->sum('total'); $totalCompras = Nfe::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id)->where('tpNF', 0) ->where('orcamento', 0) ->where('finNFe', 1) ->where('estado', '!=', 'cancelado') ->sum('total'); $suprimentos = SuprimentoCaixa::where('caixa_id', $item->id)->get(); $somaServicos = ItemServicoNfce::join('nfces', 'nfces.id', '=', 'item_servico_nfces.nfce_id') ->where('nfces.empresa_id', request()->empresa_id)->where('nfces.caixa_id', $item->id) ->sum('sub_total') + OrdemServico::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id) ->sum('valor'); $produtos = $this->totalizaProdutos($data); $p = view('caixa.imprimir_80', compact( 'item', 'data', 'usuario', 'totalVendas', 'totalCompras', 'somaTiposPagamento', 'config', 'sangrias', 'somaServicos', 'suprimentos', 'produtos' )); $height = 250; $height += sizeof($data)*32; $height += sizeof($produtos)*30; $domPdf = new Dompdf(["enable_remote" => true]); $domPdf->loadHtml($p); $pdf = ob_get_clean(); $domPdf->setPaper([0,0,204,$height]); $pdf = $domPdf->render(); $domPdf->stream("Relatório de caixa.pdf", array("Attachment" => false)); } private function totalizaProdutos($vendas){ $produtos = []; $produtos_id = []; foreach($vendas as $v){ foreach($v->itens as $item){ if(!in_array($item->produto_id, $produtos_id)){ $quantidade = $item->quantidade; if($item->produto->unidade == 'UN' || $item->produto->unidade == 'UNID'){ $quantidade = number_format($item->quantidade, 0); } $p = [ 'id' => $item->produto->id, 'nome' => $item->produto->nome, 'quantidade' => $quantidade, 'valor_venda' => $item->produto->valor_unitario, 'valor_compra' => $item->produto->valor_compra ]; array_push($produtos, $p); array_push($produtos_id, $item->produto_id); }else{ //atualiza for($i=0; $iproduto_id){ $produtos[$i]['quantidade'] += $item->quantidade; if($item->produto->unidade == 'UN' || $item->produto->unidade == 'UNID'){ $produtos[$i]['quantidade'] = number_format($produtos[$i]['quantidade'], 0); }else{ $produtos[$i]['quantidade'] = number_format($produtos[$i]['quantidade'], 3); } } } } } } return $produtos; } public function fecharConta($id){ $item = Caixa::findOrFail($id); $somaTiposPagamento = []; $contas = []; $nfce = Nfce::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id) ->where('estado', '!=', 'cancelado') // ->where('tipo_pagamento', '!=', '06') ->get(); $nfe = Nfe::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id)->where('tpNF', 1) ->where('finNFe', 1) ->where('estado', '!=', 'cancelado') ->get(); $ordens = OrdemServico::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id) ->get(); $pagar = ContaPagar::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id)->get(); $receber = ContaReceber::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id)->get(); $compras = Nfe::where('empresa_id', request()->empresa_id)->where('caixa_id', $item->id)->where('tpNF', 0) ->where('orcamento', 0) ->where('finNFe', 1) ->get(); $data = $this->agrupaDados($nfce, $nfe, $ordens, $compras); $somaTiposPagamento = $this->somaTiposPagamento($data); $contasEmpresa = ContaEmpresa::where('empresa_id', request()->empresa_id) // ->where('local_id', $item->local_id) ->where('status', 1)->get(); return view('caixa.fechar_lista', compact('item', 'somaTiposPagamento', 'contasEmpresa')); } public function fecharTiposPagamento(Request $request, $id){ $item = Caixa::findOrFail($id); $item->status = 0; $item->data_fechamento = date('Y-m-d h:i:s'); try{ $result = DB::transaction(function () use ($request, $item) { if($request->conta_empresa_id){ for($i=0; $iconta_empresa_id); $i++){ $data = [ 'conta_id' => $request->conta_empresa_id[$i], 'descricao' => "Fechamento de caixa - " . ($request->descricao[$i] ? $request->descricao[$i] : ""), 'tipo_pagamento' => $request->tipo_pagamento[$i], 'valor' => __convert_value_bd($request->valor[$i]), 'caixa_id' => $item->id, 'tipo' => 'entrada' ]; $itemContaEmpresa = ItemContaEmpresa::create($data); $this->util->atualizaSaldo($itemContaEmpresa); } } return true; }); $item->save(); session()->flash('flash_success', 'Caixa fechado com sucesso!'); }catch(\Exception $e){ session()->flash('flash_error', 'Algo deu errado: ' . $e->getMessage()); } return redirect()->route('caixa.list'); } public function abertosEmpresa(Request $request){ $data = Caixa::where('empresa_id', $request->empresa_id)->where('status', 1)->get(); return view('caixa.abertos', compact('data')); } }