feat(crm): cross-link to CRM settings from quote + invoice editors

Add a 'Configure defaults in Settings' link (opens Settings → CRM in a
new tab) under the payment-conditions section of the quote and invoice
editors, so the admin can jump to the payment-term / Skonto / numbering
defaults without hunting for the settings page.
This commit is contained in:
Luca
2026-06-03 13:12:28 +02:00
parent 7eec1337da
commit d7f0488f6e
4 changed files with 10 additions and 0 deletions
+1
View File
@@ -76,6 +76,7 @@
"common": { "common": {
"loading": "Wird geladen...", "loading": "Wird geladen...",
"error": "Fehler", "error": "Fehler",
"configureInSettings": "Standards in den Einstellungen anpassen ↗",
"save": "Speichern", "save": "Speichern",
"cancel": "Abbrechen", "cancel": "Abbrechen",
"delete": "Löschen", "delete": "Löschen",
+1
View File
@@ -76,6 +76,7 @@
"common": { "common": {
"loading": "Loading...", "loading": "Loading...",
"error": "Error", "error": "Error",
"configureInSettings": "Configure defaults in Settings ↗",
"save": "Save", "save": "Save",
"cancel": "Cancel", "cancel": "Cancel",
"delete": "Delete", "delete": "Delete",
@@ -653,6 +653,10 @@ export const BillEditorPage: React.FC = () => {
only has the single FK still resolve their preview text. */} only has the single FK still resolve their preview text. */}
<Card> <Card>
<h3 className="font-semibold mb-2">{t('bills.section.payment', 'Payment conditions')}</h3> <h3 className="font-semibold mb-2">{t('bills.section.payment', 'Payment conditions')}</h3>
<a href="/admin/settings?tab=crm" target="_blank" rel="noopener noreferrer"
className="text-xs text-accent hover:underline mb-2 inline-block">
{t('common.configureInSettings', 'Configure defaults in Settings ↗')}
</a>
<div className="grid grid-cols-1 md:grid-cols-2 gap-3"> <div className="grid grid-cols-1 md:grid-cols-2 gap-3">
<div> <div>
<label className="block text-sm font-medium mb-1">{t('bills.field.paymentNetDays', 'Net days')}</label> <label className="block text-sm font-medium mb-1">{t('bills.field.paymentNetDays', 'Net days')}</label>
@@ -536,6 +536,10 @@ export const QuoteEditorPage: React.FC = () => {
below now reads from the timing template. */} below now reads from the timing template. */}
<Card> <Card>
<h3 className="font-semibold mb-2">4. {t('quotes.section.payment', 'Payment conditions')}</h3> <h3 className="font-semibold mb-2">4. {t('quotes.section.payment', 'Payment conditions')}</h3>
<a href="/admin/settings?tab=crm" target="_blank" rel="noopener noreferrer"
className="text-xs text-accent hover:underline mb-2 inline-block">
{t('common.configureInSettings', 'Configure defaults in Settings ↗')}
</a>
<div className="grid grid-cols-1 md:grid-cols-2 gap-3"> <div className="grid grid-cols-1 md:grid-cols-2 gap-3">
<div> <div>
<label className="block text-sm font-medium mb-1">{t('quotes.field.paymentNetDays', 'Net days')}</label> <label className="block text-sm font-medium mb-1">{t('quotes.field.paymentNetDays', 'Net days')}</label>