feat: Admin-Firmendaten, Rechnungserstellung für Kunden mit Pro-rata-Abrechnung und Ultimo-Erinnerung

- Neue Seite /admin-profile: Firmendaten des Systembetreibers bearbeiten (MongoDB-persistiert), erreichbar über "Profil anzeigen" im Admin-Menü; Rechnungssteller-Daten aller System-Rechnungen kommen aus dem gespeicherten Profil
- Neue Seite /admin-create-invoices mit Sidebar-Menüpunkt "Rechnungen erstellen": alle aktiven Kunden mit wählbarem Abrechnungsmonat (aktuell bis 12 Monate zurück), Fälligkeit zum Ultimo, anteilige Berechnung bei Monatsstart mitten im Monat, Einzel- und Sammel-PDF (zusammengeführt, eine Rechnung pro Seite) aus dem System-Template
- Rechnungsgenerator: Undo-Vorbereitung aus Vorsession ergänzt um Firmendaten-Anbindung; Menüpunkt "Admin-Einstellungen" entfernt
- MonthlySchedulerService: tägliche Prüfung, drei Tage vor Ultimo Erinnerungsmail an alle Administratoren
- Session-Persistenz profilabhängig: dev und production aktiviert, Basis-Default aus (behebt SESSIONS.ser-Deserialisierungsfehler in anderen Kontexten)
- ShowJobsView: überflüssiges Feld entfernt; AssertJ catchThrowableOfType auf neue Signatur umgestellt; tsconfig ignoreDeprecations
- Übersetzungen für alle neuen Oberflächen in 10 Sprachen

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-06 17:53:25 +02:00
co-authored by Claude Fable 5
parent 2313618c05
commit a7ea4fa803
26 changed files with 1283 additions and 31 deletions
@@ -6,6 +6,11 @@ spring.data.mongodb.uri=${MONGODB_URI}
# Enable browser launch in development
vaadin.launch-browser=true
# Sessions über Neustarts persistieren (eingeloggt bleiben nach DevTools-Restart).
# Hinweis: Nach inkompatiblen Code-Änderungen kann beim Start eine harmlose
# SESSIONS.ser-Deserialisierungs-Warnung im Log erscheinen.
server.servlet.session.persistent=true
# Development logging levels
logging.level.de.assecutor.votianlt=DEBUG
logging.level.root=INFO
@@ -6,6 +6,11 @@ spring.data.mongodb.uri=${MONGODB_URI}
# Disable browser launch in production
vaadin.launch-browser=false
# Sessions über Neustarts persistieren: Nutzer bleiben nach einem
# Deployment/Neustart eingeloggt. Nach inkompatiblen Code-Änderungen verwirft
# Tomcat die alte SESSIONS.ser mit einer harmlosen Log-Warnung.
server.servlet.session.persistent=true
# 2FA Configuration - Enabled for production
app.security.two-factor.enabled=true
@@ -1,5 +1,8 @@
server.port=${PORT:8082}
server.address=0.0.0.0
# Sessions standardmäßig nicht über Neustarts persistieren; nur im dev-Profil aktiviert
# (siehe application-dev.properties)
server.servlet.session.persistent=false
# Default active profile
spring.profiles.active=dev
@@ -1086,3 +1086,42 @@ admindashboard.customers.empty=Keine Kunden vorhanden
invoicegenerator.positions.header=Positionen (Preistabelle)
invoicegenerator.positions.list=Positionen auflisten
button.undo=Rückgängig
# Admin-Profil (Firmendaten)
page.title.admin.profile=Firmendaten bearbeiten
adminprofile.title=Firmendaten
adminprofile.field.companyname=Firmenname
adminprofile.field.companysubtitle=Firmenzusatz
adminprofile.field.street=Straße und Hausnummer
adminprofile.field.city=PLZ und Ort
adminprofile.field.phone=Telefon
adminprofile.field.fax=Fax
adminprofile.field.email=E-Mail
adminprofile.field.website=Webseite
adminprofile.field.senderline=Absenderzeile
adminprofile.field.senderline.helper=Einzeilige Absenderangabe über der Empfängeradresse auf Rechnungen
adminprofile.field.paymentterms=Zahlungsbedingungen
adminprofile.field.footer=Fußzeile
adminprofile.field.footer.helper=Geschäftsführer, Steuernummer, Bankverbindung jede Zeile erscheint als eigene Zeile auf der Rechnung
adminprofile.notification.saved=Firmendaten gespeichert
adminprofile.notification.save.error=Fehler beim Speichern: {0}
adminprofile.notification.load.error=Fehler beim Laden: {0}
# Rechnungen erstellen (Admin)
page.title.admin.createinvoices=Rechnungen erstellen
admincreateinvoices.title=Rechnungen erstellen
admincreateinvoices.hint=Rechnungen werden zum Monatsende (Ultimo) fällig. Beginnt ein Kunde im laufenden Monat, werden nur die verbleibenden Tage bis Ultimo berechnet.
admincreateinvoices.column.customer=Kunde
admincreateinvoices.column.email=E-Mail
admincreateinvoices.column.start=Kunde seit
admincreateinvoices.column.days=Abgerechnete Tage
admincreateinvoices.column.due=Fällig am
admincreateinvoices.column.net=Nettobetrag
admincreateinvoices.days.full=Voller Monat
admincreateinvoices.days.partial={0} von {1} Tagen
admincreateinvoices.prorata.suffix=(anteilig {0}/{1} Tage)
admincreateinvoices.button.create=Rechnung erstellen
admincreateinvoices.notification.notemplate=Kein Rechnungstemplate vorhanden. Bitte zuerst im Rechnungsgenerator ein Template speichern.
admincreateinvoices.notification.error=Fehler beim Erstellen der Rechnung: {0}
admincreateinvoices.button.createselected=Rechnungen erstellen ({0})
admincreateinvoices.field.month=Abrechnungsmonat
@@ -916,3 +916,42 @@ admindashboard.customers.empty=Kliente pole
invoicegenerator.positions.header=Positsioonid (hinnatabel)
invoicegenerator.positions.list=Positsioonide loend
button.undo=Võta tagasi
# Admini profiil (ettevõtte andmed)
page.title.admin.profile=Ettevõtte andmete muutmine
adminprofile.title=Ettevõtte andmed
adminprofile.field.companyname=Ettevõtte nimi
adminprofile.field.companysubtitle=Ettevõtte lisand
adminprofile.field.street=Tänav ja majanumber
adminprofile.field.city=Sihtnumber ja linn
adminprofile.field.phone=Telefon
adminprofile.field.fax=Faks
adminprofile.field.email=E-post
adminprofile.field.website=Veebileht
adminprofile.field.senderline=Saatja rida
adminprofile.field.senderline.helper=Üherealine saatja teave arve saaja aadressi kohal
adminprofile.field.paymentterms=Maksetingimused
adminprofile.field.footer=Jalus
adminprofile.field.footer.helper=Tegevjuhid, maksunumber, pangaandmed iga rida kuvatakse arvel eraldi reana
adminprofile.notification.saved=Ettevõtte andmed salvestatud
adminprofile.notification.save.error=Viga salvestamisel: {0}
adminprofile.notification.load.error=Viga laadimisel: {0}
# Arvete koostamine (admin)
page.title.admin.createinvoices=Arvete koostamine
admincreateinvoices.title=Arvete koostamine
admincreateinvoices.hint=Arved kuuluvad tasumisele kuu lõpus. Kui klient alustab kuu keskel, arvestatakse ainult kuu lõpuni jäänud päevad.
admincreateinvoices.column.customer=Klient
admincreateinvoices.column.email=E-post
admincreateinvoices.column.start=Klient alates
admincreateinvoices.column.days=Arvestatud päevad
admincreateinvoices.column.due=Tähtaeg
admincreateinvoices.column.net=Netosumma
admincreateinvoices.days.full=Terve kuu
admincreateinvoices.days.partial={0} / {1} päeva
admincreateinvoices.prorata.suffix=(proportsionaalselt {0}/{1} päeva)
admincreateinvoices.button.create=Koosta arve
admincreateinvoices.notification.notemplate=Arve mall puudub. Palun salvestage kõigepealt mall arvegeneraatoris.
admincreateinvoices.notification.error=Viga arve koostamisel: {0}
admincreateinvoices.button.createselected=Koosta arved ({0})
admincreateinvoices.field.month=Arveldusperiood
@@ -1086,3 +1086,42 @@ admindashboard.customers.empty=No customers available
invoicegenerator.positions.header=Positions (price table)
invoicegenerator.positions.list=List positions
button.undo=Undo
# Admin profile (company data)
page.title.admin.profile=Edit company data
adminprofile.title=Company data
adminprofile.field.companyname=Company name
adminprofile.field.companysubtitle=Company addition
adminprofile.field.street=Street and number
adminprofile.field.city=ZIP and city
adminprofile.field.phone=Phone
adminprofile.field.fax=Fax
adminprofile.field.email=Email
adminprofile.field.website=Website
adminprofile.field.senderline=Sender line
adminprofile.field.senderline.helper=Single-line sender information above the recipient address on invoices
adminprofile.field.paymentterms=Payment terms
adminprofile.field.footer=Footer
adminprofile.field.footer.helper=Managing directors, tax number, bank details each line appears as its own line on the invoice
adminprofile.notification.saved=Company data saved
adminprofile.notification.save.error=Error while saving: {0}
adminprofile.notification.load.error=Error while loading: {0}
# Create invoices (admin)
page.title.admin.createinvoices=Create invoices
admincreateinvoices.title=Create invoices
admincreateinvoices.hint=Invoices are due at the end of the month. If a customer starts mid-month, only the remaining days until the end of the month are billed.
admincreateinvoices.column.customer=Customer
admincreateinvoices.column.email=Email
admincreateinvoices.column.start=Customer since
admincreateinvoices.column.days=Billed days
admincreateinvoices.column.due=Due on
admincreateinvoices.column.net=Net amount
admincreateinvoices.days.full=Full month
admincreateinvoices.days.partial={0} of {1} days
admincreateinvoices.prorata.suffix=(pro rata {0}/{1} days)
admincreateinvoices.button.create=Create invoice
admincreateinvoices.notification.notemplate=No invoice template available. Please save a template in the invoice generator first.
admincreateinvoices.notification.error=Error creating the invoice: {0}
admincreateinvoices.button.createselected=Create invoices ({0})
admincreateinvoices.field.month=Billing month
@@ -1017,3 +1017,42 @@ admindashboard.customers.empty=No hay clientes
invoicegenerator.positions.header=Posiciones (tabla de precios)
invoicegenerator.positions.list=Listar posiciones
button.undo=Deshacer
# Perfil de administrador (datos de la empresa)
page.title.admin.profile=Editar datos de la empresa
adminprofile.title=Datos de la empresa
adminprofile.field.companyname=Nombre de la empresa
adminprofile.field.companysubtitle=Complemento de la empresa
adminprofile.field.street=Calle y número
adminprofile.field.city=Código postal y ciudad
adminprofile.field.phone=Teléfono
adminprofile.field.fax=Fax
adminprofile.field.email=Correo electrónico
adminprofile.field.website=Sitio web
adminprofile.field.senderline=Línea de remitente
adminprofile.field.senderline.helper=Información del remitente en una línea sobre la dirección del destinatario en las facturas
adminprofile.field.paymentterms=Condiciones de pago
adminprofile.field.footer=Pie de página
adminprofile.field.footer.helper=Gerentes, número fiscal, datos bancarios cada línea aparece como línea propia en la factura
adminprofile.notification.saved=Datos de la empresa guardados
adminprofile.notification.save.error=Error al guardar: {0}
adminprofile.notification.load.error=Error al cargar: {0}
# Crear facturas (admin)
page.title.admin.createinvoices=Crear facturas
admincreateinvoices.title=Crear facturas
admincreateinvoices.hint=Las facturas vencen a fin de mes. Si un cliente comienza a mitad de mes, solo se facturan los días restantes hasta fin de mes.
admincreateinvoices.column.customer=Cliente
admincreateinvoices.column.email=Correo electrónico
admincreateinvoices.column.start=Cliente desde
admincreateinvoices.column.days=Días facturados
admincreateinvoices.column.due=Vence el
admincreateinvoices.column.net=Importe neto
admincreateinvoices.days.full=Mes completo
admincreateinvoices.days.partial={0} de {1} días
admincreateinvoices.prorata.suffix=(prorrateado {0}/{1} días)
admincreateinvoices.button.create=Crear factura
admincreateinvoices.notification.notemplate=No hay plantilla de factura. Guarde primero una plantilla en el generador de facturas.
admincreateinvoices.notification.error=Error al crear la factura: {0}
admincreateinvoices.button.createselected=Crear facturas ({0})
admincreateinvoices.field.month=Mes de facturación
@@ -1017,3 +1017,42 @@ admindashboard.customers.empty=Aucun client
invoicegenerator.positions.header=Positions (grille tarifaire)
invoicegenerator.positions.list=Lister les positions
button.undo=Annuler
# Profil administrateur (données de l'entreprise)
page.title.admin.profile=Modifier les données de l'entreprise
adminprofile.title=Données de l'entreprise
adminprofile.field.companyname=Nom de l'entreprise
adminprofile.field.companysubtitle=Complément de l'entreprise
adminprofile.field.street=Rue et numéro
adminprofile.field.city=Code postal et ville
adminprofile.field.phone=Téléphone
adminprofile.field.fax=Fax
adminprofile.field.email=E-mail
adminprofile.field.website=Site web
adminprofile.field.senderline=Ligne d'expéditeur
adminprofile.field.senderline.helper=Mention de l'expéditeur sur une ligne au-dessus de l'adresse du destinataire sur les factures
adminprofile.field.paymentterms=Conditions de paiement
adminprofile.field.footer=Pied de page
adminprofile.field.footer.helper=Gérants, numéro fiscal, coordonnées bancaires chaque ligne apparaît comme une ligne distincte sur la facture
adminprofile.notification.saved=Données de l'entreprise enregistrées
adminprofile.notification.save.error=Erreur lors de l'enregistrement : {0}
adminprofile.notification.load.error=Erreur lors du chargement : {0}
# Créer des factures (admin)
page.title.admin.createinvoices=Créer des factures
admincreateinvoices.title=Créer des factures
admincreateinvoices.hint=Les factures sont exigibles en fin de mois. Si un client commence en cours de mois, seuls les jours restants jusqu'à la fin du mois sont facturés.
admincreateinvoices.column.customer=Client
admincreateinvoices.column.email=E-mail
admincreateinvoices.column.start=Client depuis
admincreateinvoices.column.days=Jours facturés
admincreateinvoices.column.due=Échéance le
admincreateinvoices.column.net=Montant net
admincreateinvoices.days.full=Mois complet
admincreateinvoices.days.partial={0} sur {1} jours
admincreateinvoices.prorata.suffix=(au prorata {0}/{1} jours)
admincreateinvoices.button.create=Créer la facture
admincreateinvoices.notification.notemplate=Aucun modèle de facture disponible. Veuillez d'abord enregistrer un modèle dans le générateur de factures.
admincreateinvoices.notification.error=Erreur lors de la création de la facture : {0}
admincreateinvoices.button.createselected=Créer les factures ({0})
admincreateinvoices.field.month=Mois de facturation
@@ -1019,3 +1019,42 @@ admindashboard.customers.empty=Klientų nėra
invoicegenerator.positions.header=Pozicijos (kainų lentelė)
invoicegenerator.positions.list=Pozicijų sąrašas
button.undo=Anuliuoti
# Administratoriaus profilis (įmonės duomenys)
page.title.admin.profile=Redaguoti įmonės duomenis
adminprofile.title=Įmonės duomenys
adminprofile.field.companyname=Įmonės pavadinimas
adminprofile.field.companysubtitle=Įmonės priedas
adminprofile.field.street=Gatvė ir namo numeris
adminprofile.field.city=Pašto kodas ir miestas
adminprofile.field.phone=Telefonas
adminprofile.field.fax=Faksas
adminprofile.field.email=El. paštas
adminprofile.field.website=Svetainė
adminprofile.field.senderline=Siuntėjo eilutė
adminprofile.field.senderline.helper=Vienos eilutės siuntėjo informacija virš gavėjo adreso sąskaitose
adminprofile.field.paymentterms=Mokėjimo sąlygos
adminprofile.field.footer=Poraštė
adminprofile.field.footer.helper=Vadovai, mokesčių numeris, banko rekvizitai kiekviena eilutė sąskaitoje rodoma atskirai
adminprofile.notification.saved=Įmonės duomenys išsaugoti
adminprofile.notification.save.error=Klaida išsaugant: {0}
adminprofile.notification.load.error=Klaida įkeliant: {0}
# Sąskaitų kūrimas (admin)
page.title.admin.createinvoices=Kurti sąskaitas
admincreateinvoices.title=Kurti sąskaitas
admincreateinvoices.hint=Sąskaitos apmokamos mėnesio pabaigoje. Jei klientas pradeda mėnesio viduryje, apmokestinamos tik likusios dienos iki mėnesio pabaigos.
admincreateinvoices.column.customer=Klientas
admincreateinvoices.column.email=El. paštas
admincreateinvoices.column.start=Klientas nuo
admincreateinvoices.column.days=Apmokestintos dienos
admincreateinvoices.column.due=Terminas
admincreateinvoices.column.net=Neto suma
admincreateinvoices.days.full=Visas mėnuo
admincreateinvoices.days.partial={0} iš {1} dienų
admincreateinvoices.prorata.suffix=(proporcingai {0}/{1} dienų)
admincreateinvoices.button.create=Sukurti sąskaitą
admincreateinvoices.notification.notemplate=Nėra sąskaitos šablono. Pirmiausia išsaugokite šabloną sąskaitų generatoriuje.
admincreateinvoices.notification.error=Klaida kuriant sąskaitą: {0}
admincreateinvoices.button.createselected=Sukurti sąskaitas ({0})
admincreateinvoices.field.month=Atsiskaitymo mėnuo
@@ -1017,3 +1017,42 @@ admindashboard.customers.empty=Nav klientu
invoicegenerator.positions.header=Pozīcijas (cenu tabula)
invoicegenerator.positions.list=Pozīciju saraksts
button.undo=Atsaukt
# Administratora profils (uzņēmuma dati)
page.title.admin.profile=Rediģēt uzņēmuma datus
adminprofile.title=Uzņēmuma dati
adminprofile.field.companyname=Uzņēmuma nosaukums
adminprofile.field.companysubtitle=Uzņēmuma papildinājums
adminprofile.field.street=Iela un mājas numurs
adminprofile.field.city=Pasta indekss un pilsēta
adminprofile.field.phone=Tālrunis
adminprofile.field.fax=Fakss
adminprofile.field.email=E-pasts
adminprofile.field.website=Tīmekļa vietne
adminprofile.field.senderline=Sūtītāja rinda
adminprofile.field.senderline.helper=Vienas rindas sūtītāja informācija virs saņēmēja adreses rēķinos
adminprofile.field.paymentterms=Maksājuma nosacījumi
adminprofile.field.footer=Kājene
adminprofile.field.footer.helper=Vadītāji, nodokļu numurs, bankas rekvizīti katra rinda rēķinā parādās atsevišķi
adminprofile.notification.saved=Uzņēmuma dati saglabāti
adminprofile.notification.save.error=Kļūda saglabājot: {0}
adminprofile.notification.load.error=Kļūda ielādējot: {0}
# Rēķinu izveide (admin)
page.title.admin.createinvoices=Izveidot rēķinus
admincreateinvoices.title=Izveidot rēķinus
admincreateinvoices.hint=Rēķini jāapmaksā mēneša beigās. Ja klients sāk mēneša vidū, tiek aprēķinātas tikai atlikušās dienas līdz mēneša beigām.
admincreateinvoices.column.customer=Klients
admincreateinvoices.column.email=E-pasts
admincreateinvoices.column.start=Klients kopš
admincreateinvoices.column.days=Aprēķinātās dienas
admincreateinvoices.column.due=Termiņš
admincreateinvoices.column.net=Neto summa
admincreateinvoices.days.full=Pilns mēnesis
admincreateinvoices.days.partial={0} no {1} dienām
admincreateinvoices.prorata.suffix=(proporcionāli {0}/{1} dienas)
admincreateinvoices.button.create=Izveidot rēķinu
admincreateinvoices.notification.notemplate=Nav rēķina veidnes. Lūdzu, vispirms saglabājiet veidni rēķinu ģeneratorā.
admincreateinvoices.notification.error=Kļūda, veidojot rēķinu: {0}
admincreateinvoices.button.createselected=Izveidot rēķinus ({0})
admincreateinvoices.field.month=Norēķinu mēnesis
@@ -1017,3 +1017,42 @@ admindashboard.customers.empty=Brak klientów
invoicegenerator.positions.header=Pozycje (cennik)
invoicegenerator.positions.list=Lista pozycji
button.undo=Cofnij
# Profil administratora (dane firmy)
page.title.admin.profile=Edytuj dane firmy
adminprofile.title=Dane firmy
adminprofile.field.companyname=Nazwa firmy
adminprofile.field.companysubtitle=Dodatek do nazwy
adminprofile.field.street=Ulica i numer
adminprofile.field.city=Kod pocztowy i miasto
adminprofile.field.phone=Telefon
adminprofile.field.fax=Faks
adminprofile.field.email=E-mail
adminprofile.field.website=Strona internetowa
adminprofile.field.senderline=Linia nadawcy
adminprofile.field.senderline.helper=Jednoliniowa informacja o nadawcy nad adresem odbiorcy na fakturach
adminprofile.field.paymentterms=Warunki płatności
adminprofile.field.footer=Stopka
adminprofile.field.footer.helper=Zarząd, numer podatkowy, dane bankowe każda linia pojawia się jako osobny wiersz na fakturze
adminprofile.notification.saved=Dane firmy zapisane
adminprofile.notification.save.error=Błąd podczas zapisywania: {0}
adminprofile.notification.load.error=Błąd podczas ładowania: {0}
# Tworzenie faktur (admin)
page.title.admin.createinvoices=Utwórz faktury
admincreateinvoices.title=Utwórz faktury
admincreateinvoices.hint=Faktury są płatne na koniec miesiąca. Jeśli klient rozpoczyna w trakcie miesiąca, rozliczane są tylko dni pozostałe do końca miesiąca.
admincreateinvoices.column.customer=Klient
admincreateinvoices.column.email=E-mail
admincreateinvoices.column.start=Klient od
admincreateinvoices.column.days=Rozliczone dni
admincreateinvoices.column.due=Termin płatności
admincreateinvoices.column.net=Kwota netto
admincreateinvoices.days.full=Pełny miesiąc
admincreateinvoices.days.partial={0} z {1} dni
admincreateinvoices.prorata.suffix=(proporcjonalnie {0}/{1} dni)
admincreateinvoices.button.create=Utwórz fakturę
admincreateinvoices.notification.notemplate=Brak szablonu faktury. Najpierw zapisz szablon w generatorze faktur.
admincreateinvoices.notification.error=Błąd podczas tworzenia faktury: {0}
admincreateinvoices.button.createselected=Utwórz faktury ({0})
admincreateinvoices.field.month=Miesiąc rozliczeniowy
@@ -1017,3 +1017,42 @@ admindashboard.customers.empty=Клиенты отсутствуют
invoicegenerator.positions.header=Позиции (прайс-лист)
invoicegenerator.positions.list=Список позиций
button.undo=Отменить
# Профиль администратора (данные компании)
page.title.admin.profile=Редактировать данные компании
adminprofile.title=Данные компании
adminprofile.field.companyname=Название компании
adminprofile.field.companysubtitle=Дополнение к названию
adminprofile.field.street=Улица и номер дома
adminprofile.field.city=Индекс и город
adminprofile.field.phone=Телефон
adminprofile.field.fax=Факс
adminprofile.field.email=Эл. почта
adminprofile.field.website=Веб-сайт
adminprofile.field.senderline=Строка отправителя
adminprofile.field.senderline.helper=Однострочная информация об отправителе над адресом получателя в счетах
adminprofile.field.paymentterms=Условия оплаты
adminprofile.field.footer=Нижний колонтитул
adminprofile.field.footer.helper=Руководители, налоговый номер, банковские реквизиты – каждая строка отображается отдельной строкой в счете
adminprofile.notification.saved=Данные компании сохранены
adminprofile.notification.save.error=Ошибка при сохранении: {0}
adminprofile.notification.load.error=Ошибка при загрузке: {0}
# Создание счетов (админ)
page.title.admin.createinvoices=Создать счета
admincreateinvoices.title=Создать счета
admincreateinvoices.hint=Счета подлежат оплате в конце месяца. Если клиент начинает в середине месяца, оплачиваются только оставшиеся дни до конца месяца.
admincreateinvoices.column.customer=Клиент
admincreateinvoices.column.email=Эл. почта
admincreateinvoices.column.start=Клиент с
admincreateinvoices.column.days=Расчетные дни
admincreateinvoices.column.due=Срок оплаты
admincreateinvoices.column.net=Сумма нетто
admincreateinvoices.days.full=Полный месяц
admincreateinvoices.days.partial={0} из {1} дней
admincreateinvoices.prorata.suffix=(пропорционально {0}/{1} дней)
admincreateinvoices.button.create=Создать счет
admincreateinvoices.notification.notemplate=Шаблон счета отсутствует. Сначала сохраните шаблон в генераторе счетов.
admincreateinvoices.notification.error=Ошибка при создании счета: {0}
admincreateinvoices.button.createselected=Создать счета ({0})
admincreateinvoices.field.month=Расчетный месяц
@@ -1017,3 +1017,42 @@ admindashboard.customers.empty=Müşteri yok
invoicegenerator.positions.header=Kalemler (fiyat tablosu)
invoicegenerator.positions.list=Kalemleri listele
button.undo=Geri al
# Yönetici profili (şirket verileri)
page.title.admin.profile=Şirket verilerini düzenle
adminprofile.title=Şirket verileri
adminprofile.field.companyname=Şirket adı
adminprofile.field.companysubtitle=Şirket eki
adminprofile.field.street=Cadde ve numara
adminprofile.field.city=Posta kodu ve şehir
adminprofile.field.phone=Telefon
adminprofile.field.fax=Faks
adminprofile.field.email=E-posta
adminprofile.field.website=Web sitesi
adminprofile.field.senderline=Gönderen satırı
adminprofile.field.senderline.helper=Faturalarda alıcı adresinin üzerindeki tek satırlık gönderen bilgisi
adminprofile.field.paymentterms=Ödeme koşulları
adminprofile.field.footer=Alt bilgi
adminprofile.field.footer.helper=Yöneticiler, vergi numarası, banka bilgileri her satır faturada ayrı satır olarak görünür
adminprofile.notification.saved=Şirket verileri kaydedildi
adminprofile.notification.save.error=Kaydetme hatası: {0}
adminprofile.notification.load.error=Yükleme hatası: {0}
# Fatura oluşturma (admin)
page.title.admin.createinvoices=Fatura oluştur
admincreateinvoices.title=Fatura oluştur
admincreateinvoices.hint=Faturalar ay sonunda ödenir. Bir müşteri ay ortasında başlarsa, yalnızca ay sonuna kadar kalan günler faturalandırılır.
admincreateinvoices.column.customer=Müşteri
admincreateinvoices.column.email=E-posta
admincreateinvoices.column.start=Müşteri başlangıcı
admincreateinvoices.column.days=Faturalanan günler
admincreateinvoices.column.due=Vade tarihi
admincreateinvoices.column.net=Net tutar
admincreateinvoices.days.full=Tam ay
admincreateinvoices.days.partial={0} / {1} gün
admincreateinvoices.prorata.suffix=(orantılı {0}/{1} gün)
admincreateinvoices.button.create=Fatura oluştur
admincreateinvoices.notification.notemplate=Fatura şablonu yok. Lütfen önce fatura oluşturucuda bir şablon kaydedin.
admincreateinvoices.notification.error=Fatura oluşturulurken hata: {0}
admincreateinvoices.button.createselected=Fatura oluştur ({0})
admincreateinvoices.field.month=Fatura ayı