diff --git a/app/Http/Controllers/Api/SubpedidoController.php b/app/Http/Controllers/Api/SubpedidoController.php index 4513c7a..82bab9f 100644 --- a/app/Http/Controllers/Api/SubpedidoController.php +++ b/app/Http/Controllers/Api/SubpedidoController.php @@ -127,21 +127,28 @@ class SubpedidoController extends Controller */ public function syncFaltantesYSobrantes(Subpedido $subpedido): SubpedidoResource { - $producto_id = request()->producto_id; - $producto = Producto::find($producto_id); - if (!$producto) { - throw new HttpException(400, "No se encontro el producto."); - } - - $cantidad = -1*($subpedido->productos()->find($producto_id)?->cantidad ?? 0); - $valid = request()->validate([ - 'cantidad' => ['integer', 'required', 'min:' . $cantidad], - 'producto_id' => ['required'] + 'cantidad' => ['integer', 'required'], + 'producto_id' => [ + 'required', + Rule::in(Producto::all()->pluck('id')), + ] ]); + $producto = Producto::find($valid['producto_id']); + if ($producto->bono) + abort(400, "No te puede haber faltado un bono"); + $cantidad = $valid['cantidad']; - $subpedido->syncProducto($producto, $cantidad, null); - return new SubpedidoResource($subpedido); + if ($cantidad < 0) { // caso faltantes + $barrio = GrupoDeCompra::find($subpedido->grupo_de_compra_id); + $productosPedidos = $barrio->productosPedidos(true); + $cantidadPedida = intval($productosPedidos->where('producto_id', $producto->id)->first()->cantidad_pedida); + + if ($cantidadPedida + $cantidad < 0) + abort(400, 'No te puede faltar más de lo que pediste'); + } + + $subpedido->syncProducto($producto, $cantidad); } }