All checks were successful
Deploy mahnung / deploy (push) Successful in 14s
Neuer Button "Belege scannen" im Versand-Block der Mahnungs-Karte: - Action scan_belege durchlaeuft alle Files in DOL_DATA_ROOT/mahnung/<MAHN-Ref>/ - PDFs werden via pdftotext (CLI, mit Verfuegbarkeits-Check) extrahiert - txt/html werden direkt eingelesen (HTML mit strip_tags) - Pro Datei wird MahnungTrackingPattern::detectFromText() angewendet — matched gegen alle aktiven Patterns nach priority DESC - Treffer landen in $_SESSION als Vorschlag (file, provider, nr, url, label) UX: - Vorschlags-Banner mit gruener Linke ueber dem Beleg-Bereich - Pro Vorschlag: Datei-Icon, Pattern-Label, Sendungsnummer als <code>, externer Link zur Sendungsverfolgung, "Uebernehmen"-Button - "Uebernehmen" (action=apply_tracking) speichert tracking_nr + tracking_provider an der Mahnung und leert Session - "Verwerfen" (action=dismiss_tracking) entfernt nur Session-Eintrag Fallback: - Wenn pdftotext nicht im Container verfuegbar: Warnmeldung im UI, txt/html werden trotzdem verarbeitet. OCR fuer Bilder (PNG/JPG) bewusst noch nicht enthalten — separater Schritt mit Container-Anpassung (Tesseract) wenn gewuenscht. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
180 lines
6.7 KiB
Text
180 lines
6.7 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.
|
|
|
|
#
|
|
# 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.
|