All checks were successful
Deploy mahnung / deploy (push) Successful in 13s
- GlobalNotify-URL: relativer Pfad statt absoluter (DOL_MAIN_URL_ROOT ohne Protokoll führte zu kaputten Seiten-URLs im Browser); buildAbsoluteUrl() prüft jetzt auf fehlendes http(s):// - Menü-Navigation: mainmenu=billing&leftmenu=mahnung in allen list.php-Links ergänzt (createmahnung.php Redirect, Filter-Form, Hook-Links, Cron-Pfade) - card.php Dokumente: Lupe direkt neben Dateinamen, Löschen-Button pro Datei - card.php Upload: actions_linkedfiles.inc.php eingebunden (vor llxHeader), upload_dir korrekt gesetzt — showdocuments() zeigt jetzt Upload-Formular - Redundante Variablen-Definitionen (mahnungSafeRef, files.lib require) entfernt Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
202 lines
8.3 KiB
Text
202 lines
8.3 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
|
|
#
|
|
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)
|
|
MahnungStufeVersandartDefault = Default dispatch method
|
|
MahnungStufeEmailSubject = E-mail subject
|
|
MahnungStufeEmailBody = E-mail body
|
|
MahnungStufePdfIntro = PDF introduction text
|
|
|
|
#
|
|
# 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.
|
|
|
|
#
|
|
# 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)
|
|
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
|
|
|
|
#
|
|
# 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).
|
|
MahnungDokumentLoeschenConfirm = Really delete document '%s'?
|