public function store(Request $request)
 {
     $almacen = Almacen::find($request->almacen);
     if (!$almacen->verificaCapacidad($request->cantidad)) {
         Session::flash('message', 'No hay suficiente espacio en el almacen.');
         return view('produccion');
     }
     $almacen->actualizaStock($request->cantidad);
     $inventario = new Inventario();
     $inventario->fechacosecha = $request->fechacosecha;
     $inventario->cantidad = $request->cantidad;
     $inventario->status = 4;
     $inventario->id_producto = $request->producto;
     $inventario->id_almacen = $request->almacen;
     $inventario->save();
     $produccion = new Produccion();
     $produccion->precio = $request->costo;
     $produccion->caracteristicas = $request->caracteristicas;
     $produccion->dificultades = $request->dificultades;
     $produccion->id_ciudad = $request->id_ciudad;
     $produccion->id_inventario = $inventario->id;
     $produccion->cantidad = $request->cantidad;
     $produccion->save();
     Session::flash('message', 'Acción completada con éxito');
     return Redirect::to('produccion');
 }
 public function store(Request $request)
 {
     $almacen = Almacen::find($request->almacen);
     if (!$almacen->verificaCapacidad($request->cantidad)) {
         Session::flash('message', 'No existe espacio suficiente en el almacen, intenta con otro.');
         return Redirect::to('compra');
     }
     $almacen->actualizaStock($request->cantidad);
     $inventario = new Inventario();
     $inventario->fechacosecha = $request->fechacosecha;
     $inventario->cantidad = $request->cantidad;
     $pais = Pais::find($request->pais);
     if (strcmp($pais->pais, 'México') !== 0) {
         $inventario->status = 0;
     } else {
         $inventario->status = 4;
     }
     $inventario->id_producto = $request->producto;
     $inventario->id_almacen = $request->almacen;
     $inventario->save();
     $compra = new Compra();
     $compra->precio = $request->costo;
     $compra->proveedor = $request->proveedor;
     $compra->id_ciudad = $request->id_ciudad;
     $compra->id_inventario = $inventario->id;
     $compra->cantidad = $request->cantidad;
     $compra->save();
     Session::flash('message', 'Acción completada con éxito');
     return Redirect::to('compra');
 }
 public function PEPS($linea)
 {
     $total = 0;
     //variable auxiliar
     while ($total != $linea->cantidad) {
         //consulta que regresa del inv la cosecha mas vieja
         $oldInv = DB::table('inventarios')->where('status', '>=', 3)->where('cantidad', '>', 0)->where('id_producto', $linea->producto->id)->orderBy('fechacosecha', 'asc')->take(1)->get();
         $inv = Inventario::find($oldInv[0]->id);
         if ($inv->cantidad <= $linea->cantidad - $total) {
             $total = $total + $inv->cantidad;
             $inv->cantidad = 0;
         } else {
             $inv->cantidad = $inv->cantidad - ($linea->cantidad - $total);
             $total = $linea->cantidad;
         }
         $inv->save();
     }
 }
 public function update(Request $request, $id)
 {
     $salidaJSON = array();
     $lineasInventario = Inventario::all();
     foreach ($request->datos as $index => $linea) {
         $lineaCarrito = LineaCarrito::find($linea[0]);
         $disponible = 0;
         foreach ($lineasInventario as $i => $lineaInv) {
             if ($lineaInv->id_producto == $lineaCarrito->producto->id && $lineaInv->status >= 3) {
                 $disponible = $disponible + $lineaInv->cantidad;
             }
         }
         if ($linea[1] > $disponible) {
             return response()->json(['mensaje' => 'No se cuenta con la cantidad solicitada <br> O es producto en proceso de certificación', 'producto' => $lineaCarrito->producto, 'cantidad' => $disponible]);
         }
         $lineaCarrito->cantidad = $linea[1];
         $lineaCarrito->save();
         array_push($salidaJSON, $lineaCarrito->subTotal());
     }
     return response()->json($salidaJSON);
 }