Modificada logica de syncProductos para considerar caso de faltantes (con cantidades negativas)
This commit is contained in:
parent
dcf1659042
commit
71a6e496e9
1 changed files with 54 additions and 17 deletions
|
@ -68,23 +68,11 @@ class SubpedidoController extends Controller
|
||||||
|
|
||||||
// recibe request, saca producto y cantidad, valida, y pasa a syncProducto en Subpedido
|
// recibe request, saca producto y cantidad, valida, y pasa a syncProducto en Subpedido
|
||||||
public function syncProductos(Subpedido $subpedido) {
|
public function syncProductos(Subpedido $subpedido) {
|
||||||
if ($subpedido->aprobado)
|
$faltantesYSobrantes = TipoPedido::firstOrCreate(['nombre' => 'faltantes_y_sobrantes']);
|
||||||
abort(400, "No se puede modificar un pedido aprobado.");
|
if ($subpedido->tipo_pedido_id == $faltantesYSobrantes->id) {
|
||||||
|
return $this->syncFaltantesYSobrantes($subpedido);
|
||||||
$valid = request()->validate([
|
}
|
||||||
'cantidad' => ['integer','required','min:0'],
|
return $this->syncPedidoNormal($subpedido);
|
||||||
'notas' => 'nullable',
|
|
||||||
'producto_id' => [
|
|
||||||
'required',
|
|
||||||
Rule::in(Producto::all()->pluck('id')),
|
|
||||||
]
|
|
||||||
]);
|
|
||||||
|
|
||||||
$producto = Producto::find($valid['producto_id']);
|
|
||||||
$notas = $valid['notas'];
|
|
||||||
$cantidad = $valid['cantidad'];
|
|
||||||
$subpedido->syncProducto($producto, $cantidad, $notas ?? "");
|
|
||||||
return new SubpedidoResource($subpedido);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function toggleAprobacion(Subpedido $subpedido) {
|
public function toggleAprobacion(Subpedido $subpedido) {
|
||||||
|
@ -107,4 +95,53 @@ class SubpedidoController extends Controller
|
||||||
|
|
||||||
return new SubpedidoResource($subpedido);
|
return new SubpedidoResource($subpedido);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Subpedido $subpedido
|
||||||
|
* @return SubpedidoResource
|
||||||
|
*/
|
||||||
|
public function syncPedidoNormal(Subpedido $subpedido): SubpedidoResource
|
||||||
|
{
|
||||||
|
if ($subpedido->aprobado)
|
||||||
|
abort(400, "No se puede modificar un pedido aprobado.");
|
||||||
|
|
||||||
|
$valid = request()->validate([
|
||||||
|
'cantidad' => ['integer', 'required', 'min:0'],
|
||||||
|
'notas' => 'nullable',
|
||||||
|
'producto_id' => [
|
||||||
|
'required',
|
||||||
|
Rule::in(Producto::all()->pluck('id')),
|
||||||
|
]
|
||||||
|
]);
|
||||||
|
|
||||||
|
$producto = Producto::find($valid['producto_id']);
|
||||||
|
$notas = $valid['notas'];
|
||||||
|
$cantidad = $valid['cantidad'];
|
||||||
|
$subpedido->syncProducto($producto, $cantidad, $notas ?? "");
|
||||||
|
return new SubpedidoResource($subpedido);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Subpedido $subpedido
|
||||||
|
* @return SubpedidoResource
|
||||||
|
*/
|
||||||
|
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 = $valid['cantidad'];
|
||||||
|
$subpedido->syncProducto($producto, $cantidad, null);
|
||||||
|
return new SubpedidoResource($subpedido);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue