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
|
||||
public function syncProductos(Subpedido $subpedido) {
|
||||
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);
|
||||
$faltantesYSobrantes = TipoPedido::firstOrCreate(['nombre' => 'faltantes_y_sobrantes']);
|
||||
if ($subpedido->tipo_pedido_id == $faltantesYSobrantes->id) {
|
||||
return $this->syncFaltantesYSobrantes($subpedido);
|
||||
}
|
||||
return $this->syncPedidoNormal($subpedido);
|
||||
}
|
||||
|
||||
public function toggleAprobacion(Subpedido $subpedido) {
|
||||
|
@ -107,4 +95,53 @@ class SubpedidoController extends Controller
|
|||
|
||||
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