Mejorada lógica de sync pedido de faltantes y sobrantes con validación de cantidad para el caso faltantes

This commit is contained in:
Alejandro Tasistro 2025-09-13 17:43:32 -03:00
parent f008b9e263
commit e69c379304

View file

@ -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);
}
}