Bloquear selección de stock del almacén 302 al inmovilizar lotes

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
GeorgeandClaude Sonnet 5.5 committed 2026-10-01 12:24:19 -05:00
1 parent 7e0a646853
commit b02528a795
1 file changed
+15 -4
@@ -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 (
<tr
key={key}
onClick={() => 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)]"
}`}
>
<td className="py-1.5 px-2" onClick={(e) => e.stopPropagation()}>
<input
type="checkbox"
checked={isChecked}
disabled={isLocked}
onChange={() => toggleRow(w)}
/>
</td>