mahnung/langs/en_US/mahnung.lang
Eduard Wisch 56954d68f3
Some checks failed
Deploy mahnung / deploy (push) Failing after 4s
Konfigurierbare Tracking-Patterns mit Live-Vorschau [deploy]
Datenmodell:
- Neue Tabelle llx_mahnung_trackingpattern (provider, label, regex,
  url_template, priority, active). Auto-Anlage + Default-Seed im setup.php
  und in modMahnung::init() — idempotent.

Default-Patterns (priority hoeher = spezifischer, zuerst gepruef):
- DHL Paket 20-stellig (90), DPAG Einschreiben RR...DE (85), UPS 1Z... (80),
- DHL 11-stellig Online-Frankierung (30), Hermes 14-stellig (25), DPD (20).

Setup-Seite admin/tracking_patterns.php:
- CRUD (Anlegen/Bearbeiten/Aktivieren-Deaktivieren/Loeschen)
- Live-Vorschau: Regex + Beispieltext + URL-Template werden waehrend
  des Tippens (debounce 300ms) via ajax/regex_preview.php ausgewertet.
  UI zeigt: Regex-Syntax-Status, gefundene Sendungsnummer, vollstaendige
  Tracking-URL (anklickbar).
- Validierung: Delimiter / # ~ Whitelist, https://-Pflicht, {nr}-Platzhalter,
  max 255 Zeichen Regex.

AJAX-Endpoint ajax/regex_preview.php:
- ReDoS-Schutz: max 10 KB Sample, pcre.backtrack_limit=100k.
- POST-only (mit Setup-Recht), JSON-Response.

card.php:
- tracking-URL kommt jetzt aus MahnungTrackingPattern::urlFor() (DB-Lookup
  nach Provider) statt hardcoded Mahnung::trackingUrl() — letztere bleibt
  als Fallback.

Setup-Seite: neuer Button "Tracking-Muster (Regex)" oben rechts.

Lang-Keys: 23 neue (de_DE + en_US) fuer Pattern-CRUD + Live-Vorschau.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 12:04:42 +02:00

169 lines
6.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.
#
# 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.