Mejorada lógica de sync pedido de faltantes y sobrantes con validación de cantidad para el caso faltantes
This commit is contained in:
parent
f008b9e263
commit
e69c379304
1 changed files with 19 additions and 12 deletions
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue