Phase 13/14 abgeschlossen. Der Mailversand war zuvor KAPUTT: ajax/sendmail.php
war bereits zur Funktionsbibliothek umgebaut, card.php postete aber weiterhin
per JS dagegen.
Mailformular (FormMail)
- card.php nutzt jetzt Dolibarrs Standard-Mailformular (action=presend/send):
Empfaenger (Firma + alle Ansprechpartner), Betreff, Text und Anhang sichtbar
und aenderbar. Gesendet wird ausschliesslich ueber mahnungSendeErinnerungsMail().
- Anhang = unveraenderte Original-Rechnungs-PDF, wird bei Bedarf nacherzeugt.
Eigener Parameter mailinit statt mode=init, weil get_form() bei mode=init die
Anhangsliste selbst leert.
- HTML-Mails: DolEditor im Setup + withfckeditor=-1 im Formular (folgt
FCKEDITOR_ENABLE_MAIL wie Dolibarrs eigene Mailvorlagen).
- Klartext bleibt Klartext: GETPOST('restricthtml') jagt jeden Nicht-HTML-Text
durch dol_nl2br() — mahnungBodyEntkleiden() nimmt nur dieses Artefakt zurueck
und laesst echte Formatierung unangetastet.
- Platzhalter jetzt auch in Dolibarr-Schreibweise (__REF__, __DATE_YMD__,
__AMOUNT_FORMATED__, __DATE_DUE_YMD__, __FRIST_TAGE__ ...), Liste sichtbar im Setup.
- Absender-Adresse und -Name konfigurierbar (MAHNUNG_EMAIL_SENDER[_NAME]).
- Erneuter Versand moeglich (force aus dem Status abgeleitet, nicht aus dem
Request — Doppelversand-Schutz bleibt wirksam).
Versandprotokoll (neue Tabelle llx_mahnung_mailprotokoll)
- Jede versendete Erinnerung wird mit Empfaenger, Kopie, Betreff, Text und
Anhangsnamen festgehalten, einsehbar unter Versandstatus. Historie statt
Spalten am Vorgang, weil erneut gesendet werden kann.
- Lazy-Migration legt die Tabelle an (DB_VERSION 0.4.0), kein Reaktivieren noetig.
Haertung nach Code-Review (21 bestaetigte Funde)
- Anhang liess sich nicht abwaehlen (wurde sofort wieder eingehaengt)
- Upload/Entfernen ohne Rechtepruefung; Temp-Verzeichnis pro Vorgang getrennt
- Teilzahlung zwischen Oeffnen und Senden fuehrt zurueck ins Formular
- Empfaenger: Semikolon-Trenner, keine stillen Verwerfungen, Dubletten, CR/LF
- CSRF: presend + Core-Dateiaktionen (confirm_deletefile, renamefile, sendit,
linkit) token-pflichtig
- Externe Benutzer sehen nur eigene Vorgaenge; Abschreiben verlangt facture.creer
UI
- Mahnstufe nur noch EINE Darstellung (Badge), Farbskala zentral in
lib/mahnung_ui.lib.php statt doppelt gepflegt
- Zahnrad oben rechts in die Einstellungen (nur mit Recht mahnung.setup)
- Original-Rechnung unter Verknuepfte Dokumente mit Vorschau, Groesse in KB
- PDF-Einleitungstext nur noch, wo ueberhaupt ein PDF entsteht
Sprachdateien de_DE/en_US deckungsgleich, 9 tote Keys entfernt.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
532 lines
30 KiB
Text
532 lines
30 KiB
Text
# Mahnung - English (en_US)
|
|
|
|
#
|
|
# Module metadata
|
|
#
|
|
ModuleMahnungName = Dunning
|
|
ModuleMahnungDesc = Dunning workflow with proposal list, stages, late-payment interest (German BGB §288)
|
|
MahnungDescription = 3-stage dunning workflow for overdue customer invoices with dunning fees, late-payment interest per German BGB §288, and PDF dispatch.
|
|
|
|
#
|
|
# Permissions
|
|
#
|
|
PermMahnungRead = Read dunning records
|
|
PermMahnungWrite = Create / edit dunning records
|
|
PermMahnungSend = Dispatch dunning notices (e-mail / print)
|
|
PermMahnungDelete = Delete dunning records
|
|
PermMahnungSetup = Configure dunning module
|
|
|
|
#
|
|
# Menus
|
|
#
|
|
MahnungSetupOeffnen = Open dunning settings
|
|
MahnungMenu = Dunning
|
|
MahnungVorschlagsliste = Proposal list
|
|
MahnungArchiv = Dunning records
|
|
|
|
#
|
|
# Stages
|
|
#
|
|
MahnungStufe = Stage
|
|
MahnungStufe1 = Payment reminder
|
|
MahnungStufe2 = 1st dunning notice
|
|
MahnungStufe3 = Final dunning notice
|
|
MahnungStufeLabel = Label
|
|
MahnungStufeFristTage = Trigger (days after due date)
|
|
MahnungStufeNeueFristTage = New payment deadline (days)
|
|
MahnungStufeGebuehrB2C = Dunning fee B2C
|
|
MahnungStufeGebuehrB2B = Dunning fee B2B
|
|
MahnungStufeZinssatzB2C = Interest rate B2C (override)
|
|
MahnungStufeZinssatzB2B = Interest rate B2B (override)
|
|
MahnungZinssatzHelpB2C = Empty = default (%s + %s %% = %s %%), 0 = no interest
|
|
MahnungZinssatzHelpB2B = Empty = default (%s + %s %% = %s %%), 0 = no interest
|
|
MahnungStufeVersandartDefault = Default dispatch method
|
|
MahnungSenderMail = Sender address for e-mails
|
|
MahnungSenderMailHelp = Leave empty = company e-mail address, otherwise the global Dolibarr sender address.
|
|
MahnungSenderName = Sender name for e-mails
|
|
MahnungSenderNameHelp = Leave empty = company name.
|
|
MahnungSenderMailUngueltig = The sender address %s is not a valid e-mail address — nothing was saved.
|
|
MahnungPlatzhalterHilfe = Placeholders (both notations work): __REF__ / {rechnung} = invoice number · __SUMME__ / {summe} = open amount · __FRIST__ / {frist} = new payment deadline · __FAELLIG__ / {faellig} = original due date · __KUNDE__ / {kunde} = customer name · __FIRMA__ / {firma} = own company name · __STUFE__ / {stufe} = level number · __MAHNUNGREF__ / {ref} = dunning record number
|
|
MahnungStufeEmailSubject = E-mail subject
|
|
MahnungStufeEmailBody = E-mail body
|
|
MahnungStufePdfIntro = PDF introduction text
|
|
|
|
#
|
|
# Stage management (freely configurable stages + payment reminder)
|
|
#
|
|
MahnungStufen = Dunning levels
|
|
MahnungStufenIntro = Any number of levels can be configured. The dunning chain runs in ascending level order and only active levels are proposed. The level number itself cannot be changed after creation.
|
|
MahnungStufeKeine = No dunning levels configured — please create one below.
|
|
MahnungStufeIstErinnerung = Payment reminder (free of charge)
|
|
MahnungStufeIstErinnerungHelp = No dunning fee, no EUR 40 flat rate (§288 (5) BGB) and no default interest. Sent by e-mail with the unchanged original invoice attached.
|
|
MahnungStufeErinnerungKostenHinweis = Payment reminder: fees, lump sum and interest are not applied. The stored values are kept and take effect again as soon as the checkbox is cleared.
|
|
MahnungStufeNichtAngewendet = not applied for a payment reminder
|
|
MahnungStufeErinnerungVersandHinweis = Payment reminders are sent by e-mail only — please select the "E-mail" sending method.
|
|
MahnungStufeNeu = Create new dunning level
|
|
MahnungStufeNummer = Level number
|
|
MahnungStufeNummerHelp = Freely selectable (0 to 127). The order of the dunning chain follows this number, gaps are allowed.
|
|
MahnungStufeAnlegen = Create level
|
|
MahnungStufeAngelegt = Dunning level created.
|
|
MahnungStufeGeloescht = Dunning level deleted.
|
|
MahnungStufeLoeschenTitel = Delete dunning level
|
|
MahnungStufeLoeschenFrage = Really delete dunning level %s (%s)? The configuration of this level will be lost.
|
|
MahnungStufeInVerwendung = used by %s dunning record(s) — cannot be deleted
|
|
MahnungStufeNichtLoeschbar = This dunning level cannot be deleted because dunning records already refer to it. Please deactivate it instead of deleting it.
|
|
MahnungStufeNichtLoeschbarAnzahl = Level %s is used by %s dunning record(s) and cannot be deleted. Please deactivate it instead (uncheck "Active").
|
|
MahnungStufeNichtGefunden = Dunning level not found.
|
|
MahnungStufePruefungFehlgeschlagen = Check for existing dunning records failed — the level was not deleted.
|
|
MahnungStufeNummerUngueltig = The level number must be an integer between 0 and 127.
|
|
MahnungStufeNummerVergeben = Level number %s is already in use.
|
|
MahnungStufeLabelFehlt = Level %s: label is missing.
|
|
MahnungStufeWertUngueltig = Level %s: %s is invalid — please enter a number of 0 or greater.
|
|
MahnungStufeZinssatzUngueltig = Level %s: %s must be between 0 and 100 (empty = standard rate, 0 = no interest).
|
|
MahnungStufeUngueltig = Invalid dunning level — the requested level is not configured or not active.
|
|
|
|
#
|
|
# Setup: accordion header row of a dunning level
|
|
#
|
|
MahnungStufenAkkordeonHilfe = Click a header row to open that level's settings. All levels start collapsed.
|
|
MahnungStufeKopfKostenlos = free of charge
|
|
MahnungStufeKopfSofort = immediately
|
|
MahnungStufeKopfNachTagen = after %s days
|
|
MahnungStufeKopfGebuehrTitel = Dunning fee B2C / B2B
|
|
MahnungStufeInaktiv = inactive
|
|
MahnungStufeNichtLoeschbarKurz = cannot be deleted
|
|
|
|
#
|
|
# Setup: blocks inside a dunning level
|
|
#
|
|
MahnungBlockFristen = Deadlines
|
|
MahnungBlockKosten = Costs
|
|
MahnungBlockVersand = Sending
|
|
MahnungBlockZinssatzOverride = Set a different interest rate
|
|
MahnungBlockTexte = Texts for the letter
|
|
|
|
#
|
|
# Status
|
|
#
|
|
MahnungStatusEntwurf = Draft
|
|
MahnungStatusErstellt = Created
|
|
MahnungStatusVersendet = Sent
|
|
MahnungStatusErledigt = Closed
|
|
MahnungStatusStorniert = Cancelled
|
|
|
|
#
|
|
# Dispatch method
|
|
#
|
|
MahnungVersandPdf = PDF attached to invoice
|
|
MahnungVersandMail = E-mail
|
|
MahnungVersandDruck = Bulk print letter
|
|
MahnungVersandNone = No dispatch
|
|
|
|
#
|
|
# Shipment & receipts (Phase 2)
|
|
#
|
|
MahnungVersandBelege = Shipment & receipts
|
|
MahnungVersanddatum = Shipment date
|
|
MahnungVersandweg = Shipment method
|
|
MahnungVersandwegPost = Letter (regular mail)
|
|
MahnungVersandwegEinschreiben = Registered mail (Deutsche Post)
|
|
MahnungVersandwegDhl = DHL parcel
|
|
MahnungVersandwegDpd = DPD
|
|
MahnungVersandwegHermes = Hermes
|
|
MahnungVersandwegUps = UPS
|
|
MahnungVersandwegFax = Fax
|
|
MahnungVersandwegEmail = E-mail
|
|
MahnungVersandwegPersoenlich = Hand delivery
|
|
MahnungVersandwegEigen = Own delivery
|
|
MahnungTrackingNr = Tracking number
|
|
MahnungTrackingNrHint = e.g. 1234567890 (DHL), RR123456789DE (Registered)
|
|
MahnungTrackingProvider = Provider
|
|
MahnungTrackingProviderAuto = auto-detect
|
|
MahnungSendungVerfolgen = Track shipment
|
|
MahnungVersandBearbeiten = Edit shipment
|
|
MahnungVersandLeeren = Reset shipment data
|
|
MahnungVersandLeerenConfirm = Really reset shipment data? Status will remain unchanged.
|
|
MahnungVersandGespeichert = Shipment data saved
|
|
MahnungVersandGeleert = Shipment data reset
|
|
MahnungSendebelege = Shipment receipts
|
|
MahnungSendebelegeHint = Upload receipt from postal carrier/DHL/fax/mail (PDF or photo). Stays attached to the dunning case for later verification.
|
|
MahnungVersandStatus = Dispatch status
|
|
MahnungVersandart = Dispatch method
|
|
MahnungEmpfaenger = Recipient
|
|
MahnungDateVersand = Sent on
|
|
MahnungNochNichtVersendet = not sent yet
|
|
|
|
#
|
|
# Tracking patterns (Phase 3)
|
|
#
|
|
MahnungTrackingPatternsSetup = Tracking patterns (regex)
|
|
MahnungTrackingPatternsIntro = Configure which regex is applied to the text of an uploaded shipment receipt to detect tracking number + provider automatically. Higher priority is checked first.
|
|
MahnungTrackingPatternsEmpty = No tracking patterns configured. Defaults will be seeded on first call.
|
|
MahnungTrackingPatternLabel = Label
|
|
MahnungTrackingPatternProvider = Provider slug
|
|
MahnungTrackingPatternRegex = Regex (delimiters / # ~)
|
|
MahnungTrackingPatternUrlTemplate = URL template
|
|
MahnungTrackingPatternUrlHint = https URL with placeholder <code>{nr}</code> — replaced with the detected tracking number.
|
|
MahnungTrackingPatternPriority = Priority
|
|
MahnungTrackingPatternPriorityHint = Higher = checked first (e.g. 90 for specific, 20 for generic).
|
|
MahnungTrackingPatternSample = Sample text (live preview)
|
|
MahnungTrackingPatternSamplePlaceholder = Paste a sample receipt text here — match + URL appear live below.
|
|
MahnungTrackingPatternMatch = Match
|
|
MahnungTrackingPatternNoMatch = No match in sample.
|
|
MahnungTrackingPatternRegexValid = Regex syntactically valid.
|
|
MahnungTrackingPatternRegexInvalid = Invalid regex.
|
|
MahnungTrackingPatternNewTitle = Add new pattern
|
|
MahnungTrackingPatternEditTitle = Edit pattern
|
|
MahnungTrackingPatternSaved = Pattern saved.
|
|
MahnungTrackingPatternDeleted = Pattern deleted.
|
|
MahnungTrackingPatternProviderRequired = Provider slug is required.
|
|
MahnungTrackingPatternLabelRequired = Label is required.
|
|
MahnungTrackingPatternUrlMustHttps = URL template must start with https://.
|
|
MahnungTrackingPatternUrlMissingPlaceholder = URL template must contain the {nr} placeholder.
|
|
|
|
#
|
|
# Receipt scan (Phase 4)
|
|
#
|
|
MahnungBelegeScannen = Scan receipts
|
|
MahnungBelegeScannenHint = Search uploaded PDFs for tracking numbers (pdftotext + regex)
|
|
MahnungTrackingErkannt = Tracking numbers detected
|
|
MahnungTrackingUebernehmen = Apply
|
|
MahnungTrackingUebernommen = Tracking number applied
|
|
MahnungTrackingVerwerfen = Dismiss suggestions
|
|
MahnungPdftotextMissing = pdftotext not available in container — PDFs cannot be scanned. Only txt/html will be processed.
|
|
|
|
#
|
|
# Credit standing / Bad debt (Phase 6)
|
|
#
|
|
MahnungBonitaetWarnung = Bad debts on record — verify credit standing
|
|
MahnungBonitaetWarnungKurz = Credit
|
|
MahnungBonitaetRechnungSing = written-off invoice
|
|
MahnungBonitaetRechnungPlur = written-off invoices
|
|
MahnungBonitaetGesamtAusfall = total loss
|
|
MahnungBonitaetLetzteAm = Last write-off on
|
|
MahnungBonitaetAusfaelleAnzeigen = Show written-off invoices
|
|
MahnungBonitaetKundeHat = This customer has %d unrecoverable invoice(s) totalling %s. Verify credit before new business.
|
|
MahnungUneinbringlich = Classify as unrecoverable
|
|
MahnungUneinbringlichHint = Invoice will be marked as abandoned + close_code='badcustomer'. Final step after unsuccessful collection / enforcement.
|
|
MahnungUneinbringlichTitel = Classify receivable as unrecoverable
|
|
MahnungUneinbringlichWarnung = Warning: This step is (almost) final. Invoice will be set to STATUS_ABANDONED and dunning cancelled. Please confirm beforehand: unsuccessful collection order + enforcement OR proven insolvency OR statute of limitations expired. Continue with
|
|
MahnungUneinbringlichBegruendung = Reason (e.g. enforcement order from ..., insolvency case ID)
|
|
MahnungUneinbringlichErfolg = Invoice classified as unrecoverable + dunning cancelled
|
|
MahnungRechnungBereitsUneinbringlich = Invoice already abandoned
|
|
|
|
#
|
|
# List / card
|
|
#
|
|
MahnungRef = Dunning ref.
|
|
MahnungRechnung = Invoice
|
|
MahnungKunde = Customer
|
|
MahnungKontakt = Contact
|
|
MahnungKundentyp = Type
|
|
MahnungKundentypB2C = Private (B2C)
|
|
MahnungKundentypB2B = Business (B2B)
|
|
MahnungDatum = Dunning date
|
|
MahnungFaelligkeitAlt = Original due date
|
|
MahnungFaelligkeitNeu = New deadline
|
|
MahnungTageVerzug = Days overdue
|
|
MahnungBetragOffen = Open amount
|
|
MahnungGebuehr = Dunning fee
|
|
MahnungPauschaleB2B = Flat fee (40 € §288)
|
|
MahnungVerzugszinsen = Late-payment interest
|
|
MahnungSumme = Total
|
|
MahnungBasiszinsSnapshot = Base rate (snapshot)
|
|
MahnungZinssatzOverrideStufe = Overridden by dunning stage
|
|
MahnungZinssatzAusBasiszins = Base rate %s %% + surcharge
|
|
MahnungLetzteMahnung = Last dunning
|
|
MahnungVorgeschlageneStufe = Proposed stage
|
|
MahnungAktion = Action
|
|
MahnungErstellen = Create dunning
|
|
MahnungSammelbrief = Generate bulk letter
|
|
MahnungStornieren = Cancel
|
|
MahnungKeineUeberfaelligen = No overdue invoices found.
|
|
MahnungUebersprungen = Currently skipped invoices
|
|
MahnungUebersprungenHint = These invoices are overdue but currently not proposed (waiting period running or all dunning stages exhausted).
|
|
MahnungSkipGrund = Reason
|
|
MahnungUebersprungenFehler = The list of skipped invoices could not be determined: %s
|
|
MahnungArchivFehler = The dunning records could not be loaded: %s
|
|
|
|
#
|
|
# Payment reminder (free pre-stage)
|
|
#
|
|
MahnungIstErinnerung = Payment reminder
|
|
MahnungKosten = Costs
|
|
MahnungErinnerungKostenfrei = Free of charge — no dunning fee, no lump sum under sec. 288 (5) BGB, no default interest.
|
|
MahnungKostenVorstufen = Costs of previous dunning levels
|
|
MahnungErinnerungAnhangHinweis = No separate dunning PDF is created for the payment reminder. The unchanged original invoice (%s) is attached instead.
|
|
MahnungErinnerungKeinPdf = No dunning PDF is generated for a payment reminder — the original invoice is attached.
|
|
MahnungErinnerungSenden = Send payment reminder by e-mail
|
|
MahnungErinnerungSendenHint = Opens the e-mail form: recipient, subject, text and attachment can be reviewed and changed before sending.
|
|
MahnungErinnerungMailHint = Subject and text come from the dunning level configuration and can be edited here. The unchanged original invoice is attached. Nothing is sent until you press "Send".
|
|
MahnungErinnerungErneutSenden = Send payment reminder again
|
|
MahnungErinnerungErneutSendenHint = Sends the payment reminder once more — e.g. if the mail never arrived or has to go to a different address. Recipient, subject and text can be changed beforehand.
|
|
MahnungErinnerungErneutSendenWarnung = This payment reminder was already sent on %s. Submitting will send it once more — please check the recipient below.
|
|
MahnungDokument = Document
|
|
MahnungVorschau = Preview
|
|
MahnungErinnerungAnhangOriginal = e-mail attachment
|
|
MahnungErinnerungRechnungsPdfNochNicht = The original invoice does not exist as a PDF yet — it is generated when the e-mail form is opened and will then be listed here.
|
|
MahnungErinnerungGesendet = Payment reminder has been sent by e-mail.
|
|
MahnungErinnerungSendenFehler = Sending the e-mail failed.
|
|
MahnungErinnerungenErstelltHinweis = , including %s payment reminder(s) — the email is only sent after confirmation on the dunning card
|
|
MahnungErinnerungOhneEmailHinweis = — Warning: %s payment reminder(s) without a valid e-mail address and therefore not sendable by mail: %s. Please add the e-mail address to the customer record or print the reminder and send it by post.
|
|
MahnungSammelbriefNurErinnerungen = The selection contains only payment reminders. These do not produce a dunning PDF and are sent by email with the original invoice attached.
|
|
|
|
#
|
|
# E-mail dispatch of the payment reminder
|
|
#
|
|
MahnungUneinbringlichKeinRechnungsrecht = The invoice cannot be written off: this additionally requires the "create/modify invoices" permission.
|
|
MahnungMailProtokoll = Sent e-mails
|
|
MahnungMailVon = From
|
|
MahnungMailAn = To
|
|
MahnungMailKopie = Cc
|
|
MahnungMailBlindkopie = Bcc
|
|
MahnungMailBetreff = Subject
|
|
MahnungMailAnhaenge = Attachments
|
|
MahnungMailNurErinnerung = E-mail dispatch is only allowed for free payment reminders. Real dunning notices are sent by postal mail or registered letter.
|
|
MahnungMailNichtErlaubt = E-mail dispatch is not possible for this record — permission, reminder level, status and the customer e-mail address are all checked.
|
|
MahnungMailKeinEmpfaenger = No valid recipient was selected.
|
|
MahnungMailKeinBetreff = The subject must not be empty.
|
|
MahnungMailUnbekannterFehler = Unknown error while sending the e-mail.
|
|
MahnungMailEndpointEntfallen = Sending now happens through the e-mail form on the dunning card.
|
|
MahnungMailStatusStorniert = Dunning %s has been cancelled — dispatch is not possible.
|
|
MahnungMailStatusErledigt = Dunning %s is already settled — dispatch is not possible.
|
|
MahnungMailBereitsVersendet = Dunning %s was already sent on %s. Re-sending requires explicit confirmation.
|
|
MahnungMailEmpfaengerUngueltig = The e-mail address stored for the customer is invalid: %s
|
|
MahnungMailRechnungsPdfFehlt = The original invoice PDF for %s was not found and could not be generated.
|
|
MahnungMailRechnungsPdfKeinRecht = The original invoice PDF for %s is missing and cannot be generated without the "create/modify invoices" permission.
|
|
MahnungMailVersandLaeuft = Dispatch of %s is already running or has been completed in the meantime - nothing was sent again.
|
|
MahnungMailVersandSperreFehler = The dispatch could not be reserved (%s) - nothing was sent.
|
|
MahnungMailStatusNichtZurueckgesetzt = Warning: dispatch failed, but the status could not be reset (%s). Please check the status of the dunning notice.
|
|
MahnungMailKeinAbsender = No sender e-mail configured — please set a valid address in the company profile or in MAIN_MAIL_EMAIL_FROM.
|
|
MahnungMailRechnungNichtMehrOffen = Invoice %s is no longer open (paid, cancelled or written off) — nothing was sent.
|
|
MahnungMailBetragNichtErmittelbar = The currently open amount of invoice %s could not be determined reliably — nothing was sent.
|
|
MahnungMailRechnungBereitsBezahlt = Invoice %s has been paid in full in the meantime — nothing was sent.
|
|
MahnungMailBetragAngepasst = The open amount has changed to %s in the meantime — a payment came in. Nothing was sent; subject and body below have been rebuilt with the current amount. Please review and send again.
|
|
|
|
#
|
|
# Setup page
|
|
#
|
|
MahnungSetup = Dunning settings
|
|
MahnungSetupPage = Dunning configuration
|
|
MahnungSetupDescription = Configure dunning stages, base rate, dispatch methods, and Ntfy topic.
|
|
MahnungBasiszins = BGB base rate (%%)
|
|
MahnungBasiszinsHelp = Current Bundesbank base rate; update twice a year (Jan 1 / Jul 1).
|
|
MahnungAufschlagB2C = Surcharge B2C (%%)
|
|
MahnungAufschlagB2B = Surcharge B2B (%%)
|
|
MahnungPauschaleB2BLabel = Flat fee B2B (EUR)
|
|
MahnungNtfyTopic = Ntfy topic
|
|
MahnungNtfyTopicHelp = Topic for push notifications (default: vk-builds).
|
|
MahnungSettingsSaved = Settings saved.
|
|
|
|
#
|
|
# Cron
|
|
#
|
|
MahnungCronBuildVorschlag = Dunning — build proposal list
|
|
MahnungCronBuildVorschlagDesc = Daily scan for overdue invoices, sends a Ntfy push with the count of new proposals.
|
|
MahnungCronVersandReminder = Dunning — shipment reminder (unsent dunnings)
|
|
MahnungCronVersandReminderDesc = Daily check for dunnings in status ERSTELLT that have not been sent for more than N days (MAHNUNG_VERSAND_REMINDER_DAYS, default 2).
|
|
MahnungCronStufeAnzahl = Level %s (%s): %s
|
|
MahnungCronStufeOhneLabel = unnamed
|
|
MahnungCronVorschlaegeFehler = Could not build the proposal list: %s
|
|
MahnungCronFehlerUnbekannt = Unknown error
|
|
|
|
#
|
|
# Document models
|
|
#
|
|
MahnungDokumentModelle = Document models
|
|
MahnungPdfStandard = Standard PDF (DIN 5008)
|
|
MahnungGenerate = Generate document
|
|
NoDocuments = No documents available.
|
|
MahnungDokumentLoeschenConfirm = Really delete document '%s'?
|
|
|
|
#
|
|
# Hardcoded strings (i18n)
|
|
#
|
|
MahnungDokumentErstellt = Document created
|
|
MahnungDokumentFehler = Document error
|
|
MahnungDateiNichtGefunden = File not found or not associated
|
|
MahnungFehlerSpeichern = Error saving
|
|
MahnungVerfahrenErfolglos = Dunning procedure completed unsuccessfully on
|
|
MahnungFehlerKlassifizieren = Error classifying
|
|
MahnungRechnungNichtLadbar = Invoice could not be loaded
|
|
MahnungUneinbringlichKlassifiziert = Classified as unrecoverable
|
|
MahnungKeineVorgaenge = No dunning records.
|
|
MahnungStufeAmDatum = Stage %s on %s
|
|
MahnungCronKeineUeberfaellige = No overdue invoices with pending dunning.
|
|
MahnungCronOffeneVorschlaege = Dunning: %s open proposals
|
|
MahnungCronStufe1Erinnerung = Stage 1 (reminder): %s
|
|
MahnungCronStufe2Mahnung = Stage 2 (dunning): %s
|
|
MahnungCronStufe3LetzteMahnung = Stage 3 (final dunning): %s
|
|
MahnungCronOffenerBetrag = Open amount: %s EUR
|
|
MahnungCronVorschlaege = Dunning: %s proposals
|
|
MahnungCronVorschlagslisteOeffnen = Open proposal list
|
|
MahnungCronKeineUnversendet = No dunnings unsent > %s days.
|
|
MahnungCronUnversendetTitel = Dunning: %s dunning(s) unsent
|
|
MahnungCronStufeAlter = %s (stage %s, %s days old) — %s
|
|
MahnungCronWeitere = + %s more
|
|
MahnungCronArchivOeffnen = Open archive
|
|
MahnungCronEintraege = %s — %s entries
|
|
MahnungCsrfFehler = Token verification failed (CSRF).
|
|
MahnungNurPostErlaubt = This action is only allowed via form submission (POST).
|
|
MahnungNichtBerechtigt = Not authorised.
|
|
MahnungKeineRechnungenAusgewaehlt = No invoices selected.
|
|
MahnungStufeNichtKonfiguriert = Invoice #%s: stage %s not configured
|
|
MahnungMahnungErstellt = %s dunning(s) created
|
|
MahnungUebersprungen2 = , %s skipped (waiting period)
|
|
MahnungFehlerLabel = — Errors: %s
|
|
MahnungCsrfTokenUngueltig = CSRF token invalid.
|
|
MahnungNichtBerechtigtWrite = Not authorised (mahnung.write).
|
|
MahnungNichtGefunden = Dunning %s not found.
|
|
MahnungKundeKeineEmail = Customer has no e-mail address configured.
|
|
MahnungEmailFehlgeschlagen = E-mail dispatch failed: %s
|
|
MahnungSammelbriefNichtBerechtigt = Not authorised.
|
|
MahnungSammelbriefCsrfFehler = Token verification failed.
|
|
MahnungSammelbriefKeinePdfs = No PDFs generated — check whether invoices are eligible for dunning.
|
|
MahnungSammelbriefFehler = Bulk letter PDF could not be generated.
|
|
MahnungTemplateVarsTitle = Dunning — Template variables
|
|
MahnungTemplateVarsHeader = Available variables for ODT templates
|
|
MahnungTemplateVarsBackToSetup = Back to setup
|
|
MahnungTemplateVarsIntro = These variables can be used in ODT templates with curly braces, e.g. <code>{mahnung_ref}</code>.
|
|
MahnungTemplateVarsIntro2 = Stage-specific templates: <code>mahnung_stufe1.odt</code>, <code>mahnung_stufe2.odt</code>, <code>mahnung_stufe3.odt</code> — fallback: any <code>.odt</code> in the template directory.
|
|
MahnungTemplateVarsGrpMahnung = Dunning
|
|
MahnungTemplateVarsGrpRechnung = Linked invoice
|
|
MahnungTemplateVarsGrpFirma = Own company (sender)
|
|
MahnungTemplateVarsGrpKunde = Customer (recipient)
|
|
MahnungTemplateVarsGrpBank = Bank details
|
|
MahnungTemplateVarsGrpStandard = Dolibarr standard (selection)
|
|
MahnungTemplateVarsColVariable = Variable
|
|
MahnungTemplateVarsColBeschreibung = Description
|
|
MahnungTemplateVarsColBeispiel = Example
|
|
MahnungTemplateVarMahnungRef = Dunning reference number
|
|
MahnungTemplateVarMahnungStufe = Dunning stage (number)
|
|
MahnungTemplateVarMahnungStufeLabel = Stage label
|
|
MahnungTemplateVarMahnungDate = Dunning date
|
|
MahnungTemplateVarMahnungDateLimAlt = Original invoice due date
|
|
MahnungTemplateVarMahnungDateLimNeu = New payment deadline
|
|
MahnungTemplateVarMahnungBetragOffen = Open invoice amount
|
|
MahnungTemplateVarMahnungMahngebuehr = Dunning fee for this stage
|
|
MahnungTemplateVarMahnungPauschale = B2B flat fee per BGB §288 (5)
|
|
MahnungTemplateVarMahnungVerzugszinsen = Calculated late-payment interest
|
|
MahnungTemplateVarMahnungSumme = Total claim (open + fees + interest)
|
|
MahnungTemplateVarMahnungBasiszins = BGB base rate (snapshot at creation)
|
|
MahnungTemplateVarMahnungZinssatz = Effective interest rate (base + surcharge)
|
|
MahnungTemplateVarMahnungKundentyp = Customer type
|
|
MahnungTemplateVarMahnungKundentypBsp = B2C or B2B
|
|
MahnungTemplateVarMahnungVersandart = Dispatch method
|
|
MahnungTemplateVarMahnungVersandartBsp = pdf, mail, druck, none
|
|
MahnungTemplateVarMahnungPdfIntro = Introduction text of dunning stage (from setup or default)
|
|
MahnungTemplateVarMahnungPdfIntroBsp = our invoice listed below...
|
|
MahnungTemplateVarFactureRef = Invoice number
|
|
MahnungTemplateVarFactureDate = Invoice date
|
|
MahnungTemplateVarFactureDateLim = Original due date
|
|
MahnungTemplateVarFactureTotalHt = Net amount of invoice
|
|
MahnungTemplateVarFactureTotalTtc = Gross amount of invoice
|
|
MahnungTemplateVarFactureTotalTva = VAT amount
|
|
MahnungTemplateVarFactureAlreadyPaid = Already paid amount
|
|
MahnungTemplateVarFirmaName = Company name
|
|
MahnungTemplateVarFirmaStrasse = Street
|
|
MahnungTemplateVarFirmaPlz = Postal code
|
|
MahnungTemplateVarFirmaOrt = City
|
|
MahnungTemplateVarFirmaLand = Country
|
|
MahnungTemplateVarFirmaTelefon = Phone number
|
|
MahnungTemplateVarFirmaFax = Fax number
|
|
MahnungTemplateVarFirmaEmail = E-mail address
|
|
MahnungTemplateVarFirmaWeb = Website
|
|
MahnungTemplateVarFirmaHr = Commercial register number
|
|
MahnungTemplateVarFirmaSteuernr = SIRET/Tax number
|
|
MahnungTemplateVarFirmaKapital = Share capital
|
|
MahnungTemplateVarFirmaLogo = Company logo (inserted as image)
|
|
MahnungTemplateVarFirmaLogoBsp = (image file)
|
|
MahnungTemplateVarKundeName = Customer name
|
|
MahnungTemplateVarKundeAlias = Short name/alias
|
|
MahnungTemplateVarKundeStrasse = Street
|
|
MahnungTemplateVarKundePlz = Postal code
|
|
MahnungTemplateVarKundeOrt = City
|
|
MahnungTemplateVarKundeLand = Country
|
|
MahnungTemplateVarKundeTelefon = Phone
|
|
MahnungTemplateVarKundeEmail = E-mail
|
|
MahnungTemplateVarKundeHr = Commercial register
|
|
MahnungTemplateVarKundeSteuernr = Tax number
|
|
MahnungTemplateVarKundeUstIdNr = VAT ID
|
|
MahnungTemplateVarKundeNotiz = Public note of customer
|
|
MahnungTemplateVarBankName = Bank name
|
|
MahnungTemplateVarBankIban = IBAN
|
|
MahnungTemplateVarBankBic = BIC/SWIFT
|
|
MahnungTemplateVarAbsenderName = Sender name
|
|
MahnungTemplateVarAbsenderEmail = Sender e-mail
|
|
MahnungTemplateVarDatum = Current date
|
|
MahnungTemplateVarUserNachname = Last name of logged-in user
|
|
MahnungTemplateVarUserVorname = First name of logged-in user
|
|
MahnungTemplateVarUserEmail = E-mail of logged-in user
|
|
MahnungSetupTemplateVars = Available template variables
|
|
MahnungTriggerBeschreibung = Dunning trigger: marks open dunnings as closed on payment receipt.
|
|
MahnungBoxStufe = Stage %s
|
|
MahnungBoxStufeVom = Stage %s from %s
|
|
MahnungBoxErinnerung = Reminder
|
|
MahnungBoxErinnerungVom = Payment reminder from %s
|
|
MahnungBoxOffeneRechnungen = Overdue customer invoices with dunning stage
|
|
MahnungBoxKeineOffenenRechnungen = No open customer invoices
|
|
MahnungBoxMaxLines = Widget: displayed open invoices
|
|
MahnungBoxMaxLinesAll = All
|
|
MahnungBoxMaxLinesHelp = How many open invoices the home widget shows at most. "All" = no limit. The counter in the widget header always shows the real total.
|
|
MahnungBoxNetto = Net
|
|
MahnungBoxBrutto = Gross
|
|
# Widget: payment forecast (scale identical to BuchhaltungsWidget / KB #886)
|
|
MahnungProgVslZahlung = Est. payment
|
|
MahnungProgVorbildlich = Exemplary
|
|
MahnungProgPuenktlich = On time
|
|
MahnungProgSpaetzahler = Slightly late
|
|
MahnungProgVerspaetet = Late
|
|
MahnungProgProblematisch = Problematic
|
|
MahnungProgKeineHistorie = no history
|
|
MahnungProgKeineHistorieTip = Too few paid invoices for a reliable payment forecast
|
|
MahnungProgSpaeterAlsUeblich = later than usual
|
|
MahnungProgNachRechnung = d after invoice
|
|
MahnungProgTooltip = expected on %s — pays on average %s days after invoice date (%s paid invoices)
|
|
MahnungVorschlagStufeNichtKonfiguriert = Stage 1 not configured
|
|
MahnungVorschlagFristNichtErreicht = Stage 1 deadline (%s days) not yet reached (overdue %s days)
|
|
MahnungVorschlagAlleStufenAusgeschoepft = All dunning stages exhausted (last stage %s)
|
|
MahnungVorschlagWartefristLaeuft = Waiting period after stage %s still running (%s/%s days)
|
|
MahnungVorschlagBetragNull = Open amount <= 0 (probably fully paid, paye flag not yet set)
|
|
MahnungVorschlagKeineStufenKonfiguriert = No active dunning stage configured — please create and activate at least one stage in the module setup.
|
|
MahnungVorschlagSqlFehler = Database error while determining dunning proposals: %s
|
|
MahnungVorschlagFehler = Could not determine the dunning proposals. Please check the dunning level configuration and the log.
|
|
MahnungVorschlagFristNichtErreichtStufe = Deadline for stage %s (%s days) not yet reached (overdue %s days)
|
|
MahnungVorschlagWartefristZielstufe = Waiting period for stage %s still running (%s of %s days since stage %s)
|
|
MahnungVorschlagBadgeMahnungHelp = Chargeable dunning notice — dunning fee, lump sum under sec. 288 (5) BGB where applicable and default interest are charged.
|
|
MahnungPatternNichtGefunden = Pattern not found
|
|
MahnungSpeichernFehlgeschlagen = Save failed
|
|
MahnungCronCommentBuild = Scans for overdue invoices, determines proposed dunning stages, sends Ntfy push
|
|
MahnungCronCommentReminder = Ntfy reminder for dunnings with status ERSTELLT that have not been dispatched for > N days (MAHNUNG_VERSAND_REMINDER_DAYS, default 2)
|
|
|
|
#
|
|
# PDF texts
|
|
#
|
|
MahnungPdfAnrede = Dear Sir or Madam,
|
|
MahnungPdfGruss = Kind regards
|
|
MahnungPdfFristUmgehend = We kindly ask for immediate settlement.
|
|
MahnungPdfFristBis = We kindly ask you to transfer the outstanding amount by %s at the latest to the account listed below.
|
|
MahnungPdfDefaultIntro1 = our invoice listed below has not been settled despite the payment deadline having passed. Perhaps this escaped your attention — we kindly ask you to transfer the outstanding amount promptly.
|
|
MahnungPdfDefaultIntro2 = unfortunately we have noted that the invoice listed below remains unpaid despite our payment reminder. We now urge you to settle the outstanding amount plus late-payment interest and dunning fees.
|
|
MahnungPdfDefaultIntro3 = we have already reminded you twice to settle the invoice listed below. Should the outstanding amount including late-payment interest and dunning fees not be received in our account within the stated deadline, we will be compelled to take further legal action.
|
|
MahnungPdfRechnungNichtLadbar = Invoice %s could not be loaded.
|
|
MahnungPdfKundeNichtLadbar = Customer %s could not be loaded.
|
|
MahnungPdfStufeNichtKonfiguriert = Dunning stage %s not configured.
|
|
MahnungPdfVerzeichnisFehler = Cannot create directory: %s
|
|
MahnungPdfFooterEmail = E-mail: %s
|
|
MahnungPdfFooterTel = Phone: %s
|
|
MahnungPdfNichtFuerErinnerung = No dunning letter is generated for a payment reminder (%s) — the unmodified original invoice is attached instead.
|
|
MahnungPdfSchreibfehler = Could not write PDF file: %s
|
|
|
|
#
|
|
# E-mail defaults
|
|
#
|
|
MahnungEmailDefaultSubject = Dunning notice {stufe} for invoice {rechnung}
|
|
MahnungEmailDefaultBody1 = Dear Customer,\n\nplease find attached a friendly payment reminder for invoice {rechnung}.\nOutstanding amount incl. interest: {summe}.\nWe kindly ask for settlement by {frist} at the latest.\n\nKind regards
|
|
MahnungEmailDefaultBody2 = Dear Customer,\n\nplease find attached the 1st dunning notice for invoice {rechnung}.\nPlease transfer {summe} by {frist}.\n\nKind regards
|
|
MahnungEmailDefaultBody3 = Dear Customer,\n\nplease find attached the final dunning notice for invoice {rechnung}.\nIf the amount of {summe} is not received by {frist}, we will initiate legal proceedings.\n\nKind regards
|
|
# Free payment reminder — deliberately WITHOUT fees, interest or any legal threat.
|
|
# The word "dunning" must not appear in the subject. Placeholders: {ref} {stufe} {summe} {rechnung} {frist} {kunde}
|
|
MahnungErinnerungMailBetreff = Payment reminder for invoice {rechnung}
|
|
MahnungErinnerungMailText = Dear Sir or Madam,\n\nthank you very much for entrusting us with your electrical work.\n\nWhile going through our accounts we noticed that our invoice {rechnung} amounting to {summe} is still recorded as open. It has probably just slipped through in day-to-day business — for your convenience the invoice is attached to this e-mail, unchanged.\n\nWe would be glad if you could transfer the amount by {frist}. If your payment has crossed with this e-mail, please disregard this reminder.\n\nIf anything about the invoice is unclear, just drop us a line and we will sort it out together.\n\nKind regards
|
|
MahnungKeineSendungsnummerErkannt = No tracking number found in receipts. Image PDFs are processed via OCR — if still nothing was found, the receipt may not contain a tracking number.
|