1
0
mirror of https://github.com/invoiceninja/invoiceninja.git synced 2024-11-10 05:02:36 +01:00

updates for PdfService

This commit is contained in:
David Bomba 2023-10-26 16:52:34 +11:00
parent a7c63a35d9
commit 0d285b606d

View File

@ -12,17 +12,20 @@
namespace App\Services\Pdf;
use App\Models\Company;
use App\Models\CreditInvitation;
use App\Models\InvoiceInvitation;
use App\Models\PurchaseOrderInvitation;
use App\Models\QuoteInvitation;
use App\Models\RecurringInvoiceInvitation;
use App\Utils\HostedPDF\NinjaPdf;
use App\Models\Invoice;
use App\Utils\HtmlEngine;
use App\Utils\PhantomJS\Phantom;
use App\Utils\Traits\Pdf\PageNumbering;
use App\Utils\Traits\Pdf\PdfMaker;
use App\Models\QuoteInvitation;
use App\Utils\VendorHtmlEngine;
use App\Models\CreditInvitation;
use App\Utils\PhantomJS\Phantom;
use App\Models\InvoiceInvitation;
use App\Utils\HostedPDF\NinjaPdf;
use App\Utils\Traits\Pdf\PdfMaker;
use App\Jobs\Invoice\CreateEInvoice;
use App\Models\PurchaseOrderInvitation;
use App\Utils\Traits\Pdf\PageNumbering;
use App\Models\RecurringInvoiceInvitation;
use horstoeko\zugferd\ZugferdDocumentPdfBuilder;
class PdfService
{
@ -92,6 +95,11 @@ class PdfService
if ($numbered_pdf) {
$pdf = $numbered_pdf;
}
if($this->config->entity_string == "invoice" && $this->config->settings->enable_e_invoice) {
$pdf = $this->checkEInvoice($pdf);
}
} catch (\Exception $e) {
nlog(print_r($e->getMessage(), 1));
throw new \Exception($e->getMessage(), $e->getCode());
@ -162,4 +170,61 @@ class PdfService
return $pdf;
}
/**
* Switch to determine if we need to embed the xml into the PDF itself
*
* @param string $pdf
* @return string
*/
private function checkEInvoice(string $pdf): string
{
if(!$this->config->entity instanceof Invoice)
return $pdf;
$e_invoice_type = $this->config->settings->e_invoice_type;
switch ($e_invoice_type) {
case "EN16931":
case "XInvoice_2_2":
case "XInvoice_2_1":
case "XInvoice_2_0":
case "XInvoice_1_0":
case "XInvoice-Extended":
case "XInvoice-BasicWL":
case "XInvoice-Basic":
return $this->embedEInvoiceZuGFerD($pdf) ?? $pdf;
//case "Facturae_3.2":
//case "Facturae_3.2.1":
//case "Facturae_3.2.2":
//
default:
return $pdf;
}
}
/**
* Embed the .xml file into the PDF
*
* @param string $pdf
* @return string
*/
private function embedEInvoiceZuGFerD(string $pdf): string
{
try {
$e_rechnung = (new CreateEInvoice($this->config->entity, true))->handle();
$pdfBuilder = new ZugferdDocumentPdfBuilder($e_rechnung, $pdf);
$pdfBuilder->generateDocument();
return $pdfBuilder->downloadString(basename($this->config->entity->getFileName()));
} catch (\Exception $e) {
nlog("E_Invoice Merge failed - " . $e->getMessage());
}
return $pdf;
}
}