diff --git a/mini-frontend/src/views/inventario/InmovilizarLotesView.tsx b/mini-frontend/src/views/inventario/InmovilizarLotesView.tsx index 24b0b3f..0d447bf 100644 --- a/mini-frontend/src/views/inventario/InmovilizarLotesView.tsx +++ b/mini-frontend/src/views/inventario/InmovilizarLotesView.tsx @@ -177,7 +177,13 @@ export default function InmovilizarLotesView() { } }; + // El stock que ya está en el almacén de inmovilizados (302) no se puede + // volver a inmovilizar, así que esa fila no es seleccionable. + const isLockedRow = (row: BatchWarehouseStock) => + row.WarehouseCode === DEFAULT_TO_WAREHOUSE.code; + const toggleRow = (row: BatchWarehouseStock) => { + if (isLockedRow(row)) return; const key = rowKey(row); setSelections((prev) => { if (key in prev) { @@ -378,22 +384,27 @@ export default function InmovilizarLotesView() { {group.rows.map((w) => { const key = rowKey(w); const isChecked = key in selections; + const isLocked = isLockedRow(w); const rawQuantity = selections[key] ?? ""; const rowQuantityError = isChecked ? quantityErrorFor(w, rawQuantity) : ""; return ( toggleRow(w)} - className={`cursor-pointer border-b border-[var(--color-border-light)] ${ - isChecked - ? "bg-[var(--color-primary-active)]" - : "hover:bg-[var(--color-sidebar-hover)]" + title={isLocked ? "Stock ya inmovilizado (almacén 302)" : undefined} + className={`border-b border-[var(--color-border-light)] ${ + isLocked + ? "cursor-not-allowed opacity-50" + : isChecked + ? "cursor-pointer bg-[var(--color-primary-active)]" + : "cursor-pointer hover:bg-[var(--color-sidebar-hover)]" }`} > e.stopPropagation()}> toggleRow(w)} />