public function store(Request $request, $id) { $compra = Compra::find($id); $saldo = []; foreach ($compra->compra_itens as $key => $it) { if ($it->quantidade > $request->item[$key]['quantidade']) { $saldo[$key]['produto_id'] = $it->produto_id; $saldo[$key]['preco_compra'] = $it->preco_compra; $saldo[$key]['quantidade'] = $it->quantidade - $request->item[$key]['quantidade']; } } $new_compra = new Compra(); if (count($saldo) > 0) { $new_compra->fornecedor_id = $compra->fornecedor_id; $new_compra->user_id = Auth::user()->id; $new_compra->data_compra = date('d/m/Y'); $new_compra->save(); foreach ($saldo as $s) { $it = new CompraItem(); $it->compra_id = $new_compra->id; $it->produto_id = $s['produto_id']; $it->quantidade = $s['quantidade']; $it->save(); } } DB::beginTransaction(); try { foreach ($request->item as $item) { $p = Produto::find($item['produto_id']); $p->estoque += $item['quantidade']; $p->save(); } $compra->status = 2; $compra->save(); DB::commit(); } catch (\Exception $e) { DB::rollBack(); throw $e; } if ($this->reenviaEmail($new_compra)) { flash()->success('Confirmação de compra efetuada com sucesso e e-mail com itens que faltaram reenviado para o fornecedor'); } else { flash()->success('Confirmação de compra efetuada com sucesso, mas email não foi enviado, envie o mesmo manualmente.'); } return redirect()->route('compras.index'); }
public function addItem(Request $request, $id) { $compra = Compra::find($id); $item = CompraItem::create(['compra_id' => $compra->id, 'produto_id' => $request->item['produto_id'], 'quantidade' => $request->item['quantidade']]); $produto = Produto::find($item->produto->id); $dados = ['produto' => $produto->nome, 'referencia' => $produto->referencia, 'quantidade' => $request->item['quantidade'], 'compra_id' => $id, 'id' => $item->id]; return $dados; }