From f545776e15d9441de52d82f27c32aa168f3ce40b Mon Sep 17 00:00:00 2001 From: Christian Vidal Wolf Date: Thu, 23 Apr 2026 13:02:14 +0200 Subject: [PATCH] UI: Add 'Check Anna' column to Pricing Units view Mirrors Check Ying with its own checkbox and note editor (pink theme). Stored in virtual columns ANNA_CHECK (105) and ANNA_NOTE (106). Co-Authored-By: Claude Sonnet 4.6 --- src/components/PricingView.tsx | 100 ++++++++++++++++++++++++++++++++- src/types.ts | 8 ++- 2 files changed, 103 insertions(+), 5 deletions(-) diff --git a/src/components/PricingView.tsx b/src/components/PricingView.tsx index 7effc53..825c77d 100644 --- a/src/components/PricingView.tsx +++ b/src/components/PricingView.tsx @@ -592,6 +592,7 @@ export function PricingView({ data, headers, onSaveRow, onCaptureState, onEdit, }, [headers, displayedIndices]); const [noteEditor, setNoteEditor] = useState<{ rowIndex: number; text: string } | null>(null); + const [annaEditor, setAnnaEditor] = useState<{ rowIndex: number; text: string } | null>(null); const handleToggleCheck = async (rowIndex: number, checked: boolean) => { const original = data[rowIndex]; @@ -612,6 +613,25 @@ export function PricingView({ data, headers, onSaveRow, onCaptureState, onEdit, await onSaveRow(rowIndex, newRow); }; + const handleToggleAnnaCheck = async (rowIndex: number, checked: boolean) => { + const original = data[rowIndex]; + const newRow = [...original]; + newRow[COLUMNS.ANNA_CHECK] = checked; + onCaptureState(`${checked ? 'Anna checked' : 'Anna unchecked'} ${original[COLUMNS.ARTICLE_NO]}`); + await onSaveRow(rowIndex, newRow); + }; + + const saveAnnaNote = async () => { + if (!annaEditor) return; + const { rowIndex, text } = annaEditor; + const original = data[rowIndex]; + const newRow = [...original]; + newRow[COLUMNS.ANNA_NOTE] = text; + setAnnaEditor(null); + onCaptureState(`Updated Anna note for ${original[COLUMNS.ARTICLE_NO]}`); + await onSaveRow(rowIndex, newRow); + }; + // ── Column detection notice ─────────────────────────────────────────────── const missingCols: string[] = []; if (uvpIdx < 0) missingCols.push('UVP'); @@ -627,6 +647,39 @@ export function PricingView({ data, headers, onSaveRow, onCaptureState, onEdit, return (
+ {/* ── Anna Note Editor Modal ── */} + {annaEditor && ( +
+
+
+

+ + Anna Note +

+

{data[annaEditor.rowIndex][COLUMNS.ARTICLE_NO]}

+
+
+