feat: Implement invoice generation and emailing functionality

- Added invoice generation logic using DomPDF.
- Integrated invoice data retrieval from the API.
- Implemented language determination for invoices based on customer data.
- Added options to email invoices to customers and admin.
- Included HTML output option for direct viewing in the browser.
- Ensured proper redirection and error handling throughout the process.
This commit is contained in:
“VeLiTi”
2026-01-07 14:36:48 +01:00
parent 543f0b3cac
commit 08263c7933
46 changed files with 4982 additions and 151 deletions

View File

@@ -319,6 +319,21 @@ $firmwaretool_step_5 = 'Wenn Firmware verfügbar ist: Die Statusleiste zeigt "<i
$firmwaretool_step_6 = 'Wenn Firmware verfügbar ist: Stellen Sie sicher, dass SN und HW vom Gerät gelesen werden und bestätigen Sie dies, indem Sie das Kontrollkästchen "Ich bestätige, dass SN und HW vom Gerät gelesen wurden" auswählen';
$firmwaretool_step_7 = 'Drücken Sie die <i>"Firmware aktualisieren"</i>-Schaltfläche, um den Firmware-Aktualisierungsdialog zu starten und folgen Sie den Anweisungen auf dem Bildschirm';
$firmwaretool_step_8 = '<b>Hinweis: Dieser Prozess kann nicht gestoppt werden und muss abgeschlossen werden.</b>';
$softwaretool_h2 = 'Software-Upgrade-Tool';
$softwaretool_p = 'Software-Upgrade-Optionen.';
$softwaretool_step = 'Anweisungen';
$softwaretool_step_1 = 'Verbinden Sie das Gerät über USB mit dem Computer. (USB befindet sich unter der Batterieabdeckung)';
$softwaretool_step_2 = 'Drücken Sie die "<i>Verbinden</i>"-Schaltfläche';
$softwaretool_step_3 = 'Ein Popup-Fenster erscheint, in dem Sie ein Gerät auswählen können. Wählen Sie das Gerät aus, indem Sie darauf klicken, und drücken Sie dann die Verbinden-Schaltfläche.';
$softwaretool_step_4 = 'Nach dem Verschwinden des Popups wird das Gerät gelesen, die Statusleiste zeigt den Fortschritt an';
$softwaretool_step_5 = 'Verfügbare Software-Upgrades werden mit Name, Beschreibung und Preis angezeigt';
$softwaretool_step_6 = 'Wählen Sie eine Software-Version';
$softwaretool_step_7 = 'Für kostenpflichtige Upgrades folgen Sie bitte dem Zahlungsprozess';
$softwaretool_step_8 = '<b>Hinweis: Dieser Prozess kann nicht gestoppt werden und muss abgeschlossen werden.</b>';
$softwaretool_no_updates = 'Keine Software-Updates gefunden';
$softwaretool_checking = 'Suche nach Software-Updates...';
$softwaretool_available = 'Software-Updates verfügbar';
$softwaretool_select_upgrade = 'Wählen Sie eine Upgrade-Option:';
$newuser_subject = 'CustomerPortal-Benutzer erstellt';
$newuser_header = 'Lieber CustomerPortal-Benutzer';
$newuser_text = 'Ihr CustomerPortal-Administrator hat Ihnen Zugriff auf das CustomerPortal gewährt. Um Ihr Konto abzuschließen, müssen Sie Ihr Passwort über den folgenden Link aktualisieren.';

View File

@@ -319,6 +319,21 @@ $firmwaretool_step_5 = 'Cuando el firmware esté disponible: La barra de estado
$firmwaretool_step_6 = 'Cuando el firmware esté disponible: Asegúrese de que el SN y el HW se lean del dispositivo y confirme esto seleccionando la casilla "Confirmo que el SN y el HW se han leído del dispositivo"';
$firmwaretool_step_7 = 'Presione el botón <i>"Actualizar firmware"</i> para iniciar el diálogo de actualización de firmware y siga las instrucciones en pantalla';
$firmwaretool_step_8 = '<b>Tenga en cuenta: Este proceso no se puede detener y debe finalizar.</b>';
$softwaretool_h2 = 'Herramienta de actualización de software';
$softwaretool_p = 'Opciones de actualización de software.';
$softwaretool_step = 'Instrucciones';
$softwaretool_step_1 = 'Conecte el dispositivo a la computadora por USB. (Se encuentra debajo de la tapa de la batería)';
$softwaretool_step_2 = 'Presione el botón "<i>conectar</i>"';
$softwaretool_step_3 = 'Aparecerá una ventana emergente pidiendo seleccionar un dispositivo. Seleccione el dispositivo haciendo clic en él y luego presione el botón conectar.';
$softwaretool_step_4 = 'Después de que desaparezca la ventana emergente, el dispositivo será leído, la barra de estado mostrará el progreso';
$softwaretool_step_5 = 'Las actualizaciones de software disponibles se mostrarán con Nombre, Descripción y Precio';
$softwaretool_step_6 = 'Seleccione una versión de software';
$softwaretool_step_7 = 'Para actualizaciones de pago, siga el proceso de pago';
$softwaretool_step_8 = '<b>Tenga en cuenta: Este proceso no se puede detener y debe finalizar.</b>';
$softwaretool_no_updates = 'No se encontraron actualizaciones de software';
$softwaretool_checking = 'Buscando actualizaciones de software...';
$softwaretool_available = 'Actualizaciones de software disponibles';
$softwaretool_select_upgrade = 'Seleccione una opción de actualización:';
$newuser_subject = 'Usuario de CustomerPortal creado';
$newuser_header = 'Estimado usuario de CustomerPortal';
$newuser_text = 'Su administrador de CustomerPortal ha proporcionado acceso al CustomerPortal. Para completar su cuenta, debe actualizar su contraseña a través del siguiente enlace.';

View File

@@ -319,6 +319,21 @@ $firmwaretool_step_5 = 'Wanneer software beschikbaar is zal de voortgang "<i>Fir
$firmwaretool_step_6 = 'Wanneer software beschikbaar is: Bevestig dat SW and HW zijn gelezen van het apparaat door op de checkbox te klikken bij <i> Ik bevestig dat SN en HW zijn uitgelezen van de activa</i>.';
$firmwaretool_step_7 = 'Druk op de <i>"Update firmware</i>" knop om de update te starten en de instructies op het scherm te volgen';
$firmwaretool_step_8 = '<b>Opgelet: Dit proces kan niet onderbroken worden.</b>';
$softwaretool_h2 = 'Software upgrade tool';
$softwaretool_p = 'Software upgrade opties.';
$softwaretool_step = 'Instructies';
$softwaretool_step_1 = 'Sluit het apparaat via USB aan op de computer.(USB bevindt zich onder de batterijklep)';
$softwaretool_step_2 = 'Druk "<i>connect</i>" knop';
$softwaretool_step_3 = 'In het popup venster selecteer het apparaat door er op te klikken. Druk daarna op de verbinding maken knop.';
$softwaretool_step_4 = 'Het apparaat wordt nu gelezen. Een voortgang status wordt getoond';
$softwaretool_step_5 = 'Beschikbare software upgrades worden weergegeven met Naam, Beschrijving en Prijs';
$softwaretool_step_6 = 'Selecteer een software versie';
$softwaretool_step_7 = 'Voor betaalde upgrades, volg het betalingsproces';
$softwaretool_step_8 = '<b>Opgelet: Dit proces kan niet onderbroken worden.</b>';
$softwaretool_no_updates = 'Geen software updates gevonden';
$softwaretool_checking = 'Controleren op software updates...';
$softwaretool_available = 'Software updates beschikbaar';
$softwaretool_select_upgrade = 'Selecteer een upgrade optie:';
$newuser_subject = 'CustomerPortal user created';
$newuser_header = 'Dear CustomerPortal user';
$newuser_text = 'Your CustomerPortal administrator has provided access to the CustomerPortal. To complete your account you need to update your password via the link below.';

View File

@@ -319,6 +319,21 @@ $firmwaretool_step_5 = 'Gdy oprogramowanie jest dostępne: Pasek stanu pokaże "
$firmwaretool_step_6 = 'Gdy oprogramowanie jest dostępne: Upewnij się, że SN i HW zostały odczytane z urządzenia i potwierdź to zaznaczając pole "Potwierdzam, że SN i HW zostały odczytane z urządzenia"';
$firmwaretool_step_7 = 'Naciśnij przycisk <i>"Aktualizuj oprogramowanie"</i>, aby uruchomić okno aktualizacji oprogramowania i postępuj zgodnie z instrukcjami na ekranie';
$firmwaretool_step_8 = '<b>Uwaga: Ten proces nie może zostać przerwany i musi się zakończyć.</b>';
$softwaretool_h2 = 'Narzędzie aktualizacji oprogramowania';
$softwaretool_p = 'Opcje aktualizacji oprogramowania.';
$softwaretool_step = 'Instrukcje';
$softwaretool_step_1 = 'Podłącz urządzenie do komputera przez USB. (Znajduje się pod pokrywą baterii)';
$softwaretool_step_2 = 'Naciśnij przycisk "<i>połącz</i>"';
$softwaretool_step_3 = 'Pojawi się okno popup z prośbą o wybranie urządzenia. Wybierz urządzenie klikając na nie, a następnie naciśnij przycisk połącz.';
$softwaretool_step_4 = 'Po zniknięciu okna popup urządzenie zostanie odczytane, pasek stanu pokaże postęp';
$softwaretool_step_5 = 'Dostępne aktualizacje oprogramowania zostaną wyświetlone z Nazwą, Opisem i Ceną';
$softwaretool_step_6 = 'Wybierz wersję oprogramowania';
$softwaretool_step_7 = 'W przypadku płatnych aktualizacji postępuj zgodnie z procesem płatności';
$softwaretool_step_8 = '<b>Uwaga: Ten proces nie może zostać przerwany i musi się zakończyć.</b>';
$softwaretool_no_updates = 'Nie znaleziono aktualizacji oprogramowania';
$softwaretool_checking = 'Sprawdzanie aktualizacji oprogramowania...';
$softwaretool_available = 'Dostępne aktualizacje oprogramowania';
$softwaretool_select_upgrade = 'Wybierz opcję aktualizacji:';
$newuser_subject = 'Użytkownik CustomerPortal utworzony';
$newuser_header = 'Szanowny użytkowniku CustomerPortal';
$newuser_text = 'Administrator CustomerPortal przyznał Ci dostęp do CustomerPortal. Aby ukończyć konfigurację konta, musisz zaktualizować hasło za pomocą poniższego linku.';

View File

@@ -319,6 +319,21 @@ $firmwaretool_step_5 = 'Quando o firmware estiver disponível: A barra de status
$firmwaretool_step_6 = 'Quando o firmware estiver disponível: Certifique-se de que o SN e o HW sejam lidos do dispositivo e confirme isso selecionando a caixa "Eu confirmo que o SN e o HW foram lidos do dispositivo"';
$firmwaretool_step_7 = 'Pressione o botão <i>"Atualizar firmware"</i> para iniciar o diálogo de atualização de firmware e siga as instruções na tela';
$firmwaretool_step_8 = '<b>Esteja ciente: Este processo não pode ser interrompido e precisa ser concluído.</b>';
$softwaretool_h2 = 'Ferramenta de atualização de software';
$softwaretool_p = 'Opções de atualização de software.';
$softwaretool_step = 'Instruções';
$softwaretool_step_1 = 'Conecte o dispositivo ao computador por USB. (Encontrado sob a tampa da bateria)';
$softwaretool_step_2 = 'Pressione o botão "<i>conectar</i>"';
$softwaretool_step_3 = 'Um popup aparecerá pedindo para selecionar um dispositivo. Selecione o dispositivo clicando nele e depois pressione o botão conectar.';
$softwaretool_step_4 = 'Após o popup desaparecer, o dispositivo será lido, a barra de status mostrará o progresso';
$softwaretool_step_5 = 'Atualizações de software disponíveis serão exibidas com Nome, Descrição e Preço';
$softwaretool_step_6 = 'Selecione uma versão de software';
$softwaretool_step_7 = 'Para atualizações pagas, siga o processo de pagamento';
$softwaretool_step_8 = '<b>Esteja ciente: Este processo não pode ser interrompido e precisa ser concluído.</b>';
$softwaretool_no_updates = 'Nenhuma atualização de software encontrada';
$softwaretool_checking = 'Verificando atualizações de software...';
$softwaretool_available = 'Atualizações de software disponíveis';
$softwaretool_select_upgrade = 'Selecione uma opção de atualização:';
$newuser_subject = 'Usuário do CustomerPortal criado';
$newuser_header = 'Caro usuário do CustomerPortal';
$newuser_text = 'Seu administrador do CustomerPortal forneceu acesso ao CustomerPortal. Para completar sua conta, você precisa atualizar sua senha através do link abaixo.';

View File

@@ -336,8 +336,8 @@ $softwaretool_step_2 = 'Press "<i>connect</i>" button"';
$softwaretool_step_3 = 'A popup will appear asking to select a device. Select the device by clicking on it and the press the connect button.';
$softwaretool_step_4 = 'After pop-up disappears the device will be read, status bar will show progress';
$softwaretool_step_5 = 'Available software upgrades will be displayed with Name, Description and Price';
$softwaretool_step_6 = 'Select a free upgrade (price = 0) to download and install';
$softwaretool_step_7 = 'For paid upgrades, please contact support';
$softwaretool_step_6 = 'Select a software version';
$softwaretool_step_7 = 'For paid upgrades, please follow the payment process';
$softwaretool_step_8 = '<b>Be aware: This process cannot be stopped and needs to finish.</b>';
$softwaretool_no_updates = 'No software updates found';
$softwaretool_checking = 'Checking for software updates...';