feat: add Pricing & Units tab for Level error monitoring

New tab shows all products with missing UVP/SRP pricing or invalid
container units (40'HC/HQ = 0 or 1, missing Units/Outer). Price
fields are inline-editable with Supabase sync. Columns are detected
dynamically from Excel headers so future SRP countries (e.g. Poland)
appear automatically.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Christian Vidal Wolf
2026-04-07 11:23:34 +02:00
co-authored by Claude Sonnet 4.6
parent d48e2cb0ff
commit 38466b3876
3 changed files with 532 additions and 5 deletions
+14 -3
View File
@@ -10,6 +10,7 @@ import { getAllSyncedRows, saveRowToSupabase } from './lib/supabase';
import { getStoredSession, signOut, type AuthSession } from './lib/auth';
import { LoginPage } from './components/LoginPage';
import { DimensionsView } from './components/DimensionsView';
import { PricingView } from './components/PricingView';
import { UndoToast } from './components/UndoToast';
export default function App() {
@@ -31,7 +32,7 @@ export default function App() {
fileDate: null,
hasUnsavedChanges: false
});
const [activeModule, setActiveModule] = useState<'descriptions' | 'matrix' | 'dimensions'>('descriptions');
const [activeModule, setActiveModule] = useState<'descriptions' | 'matrix' | 'dimensions' | 'pricing'>('descriptions');
const [undoHistory, setUndoHistory] = useState<{ data: ExcelRow[], message: string }[]>([]);
const [editingRowIndex, setEditingRowIndex] = useState<number | null>(null);
const [isLoadingDefault, setIsLoadingDefault] = useState(true);
@@ -354,14 +355,24 @@ export default function App() {
)}
{activeModule === 'dimensions' && (
<DimensionsView
data={appState.data}
<DimensionsView
data={appState.data}
headers={appState.headers}
onEdit={(index) => setEditingRowIndex(index)}
onSaveRow={handleSaveRow}
onCaptureState={captureState}
/>
)}
{activeModule === 'pricing' && (
<PricingView
data={appState.data}
headers={appState.headers}
onSaveRow={handleSaveRow}
onCaptureState={captureState}
onEdit={(index) => setEditingRowIndex(index)}
/>
)}
</>
)}
</main>