diff --git a/src/app/(app)/delivery-notes/page.tsx b/src/app/(app)/delivery-notes/page.tsx index 06fca07..3e16332 100644 --- a/src/app/(app)/delivery-notes/page.tsx +++ b/src/app/(app)/delivery-notes/page.tsx @@ -1787,14 +1787,12 @@ export default function DeliveryNotesPage() { onOpenChange={(v) => setNoteEditor((prev) => ({ ...prev, open: v }))} deliveryNoteId={noteEditor.noteId} deliveryNoteNumber={noteEditor.number} - onSaved={(dnNumber) => { + onSaved={(dnNumber, showDocument) => { setNoteEditor((prev) => ({ ...prev, open: false })); // Refresh so the next quote review starts from what was - // just saved rather than the values fetched at page load, - // then bring the document back — "save, and show me what - // I just saved". + // just saved rather than the values fetched at page load. void fetchNotes().then(() => { - if (dnNumber) setPreviewDnNumber(dnNumber); + if (showDocument && dnNumber) setPreviewDnNumber(dnNumber); }); }} /> diff --git a/src/components/delivery-notes/delivery-note-editor-dialog.tsx b/src/components/delivery-notes/delivery-note-editor-dialog.tsx index 002f678..177267b 100644 --- a/src/components/delivery-notes/delivery-note-editor-dialog.tsx +++ b/src/components/delivery-notes/delivery-note-editor-dialog.tsx @@ -64,9 +64,12 @@ export interface DeliveryNoteEditorDialogProps { onOpenChange: (open: boolean) => void; deliveryNoteId: string; deliveryNoteNumber: string; - /** Called after a successful save, with the DN number, so the host - * can bring the document back up for printing. */ - onSaved?: (deliveryNoteNumber: string) => void; + /** + * Called after a SUCCESSFUL save, with the note number. The second + * argument is true when the operator pressed "Save & show document", + * so the host knows to bring the PDF up afterwards. + */ + onSaved?: (deliveryNoteNumber: string, showDocument: boolean) => void; } export function DeliveryNoteEditorDialog({ @@ -152,7 +155,7 @@ export function DeliveryNoteEditorDialog({ ); }; - const save = async () => { + const save = async (showDocumentAfter = false) => { setSaving(true); try { // Sequential rather than parallel: these rewrite the same DN @@ -184,7 +187,12 @@ export function DeliveryNoteEditorDialog({ `Saved ${lines.length} line${lines.length === 1 ? "" : "s"} on ${deliveryNoteNumber}.`, ); onOpenChange(false); - onSaved?.(deliveryNoteNumber); + // The host opens the document when it gets the number back. + // Passing it here rather than on the button's own click is the + // whole fix: the old "Save & show document" closed the dialog + // and showed the PDF WITHOUT saving, so the operator saw the + // old quantities and reasonably concluded the edit hadn't taken. + onSaved?.(deliveryNoteNumber, showDocumentAfter); } catch (err: unknown) { toast.error( err instanceof Error ? err.message : "Failed to save the delivery note", @@ -373,21 +381,19 @@ export function DeliveryNoteEditorDialog({ > Cancel - {/* Close without saving, but still show the document — - most times someone opens this to LOOK, not change. */} + {/* Saves, THEN shows the document. It used to only close + and show — which looked exactly like "my change was + ignored" because the PDF still carried the old numbers. */}