This commit is contained in:
Lars Kusch 2024-06-12 16:17:24 +02:00
parent 61570cea93
commit a33c3832e9

View File

@ -14,16 +14,16 @@ namespace App\Services\EDocument\Imports;
use App\Factory\ExpenseFactory; use App\Factory\ExpenseFactory;
use App\Factory\VendorFactory; use App\Factory\VendorFactory;
use App\Jobs\Util\UploadFile; use App\Jobs\Util\UploadFile;
use App\Models\Country;
use App\Models\Currency; use App\Models\Currency;
use App\Models\Expense; use App\Models\Expense;
use App\Models\Vendor; use App\Models\Vendor;
use App\Repositories\VendorRepository;
use App\Services\AbstractService; use App\Services\AbstractService;
use App\Utils\TempFile; use App\Utils\TempFile;
use Exception; use Exception;
use horstoeko\zugferd\ZugferdDocumentReader; use horstoeko\zugferd\ZugferdDocumentReader;
use horstoeko\zugferdvisualizer\renderer\ZugferdVisualizerLaravelRenderer;
use horstoeko\zugferdvisualizer\ZugferdVisualizer; use horstoeko\zugferdvisualizer\ZugferdVisualizer;
use function PHPUnit\Framework\isNull;
class ZugferdEDocument extends AbstractService { class ZugferdEDocument extends AbstractService {
public ZugferdDocumentReader|string $document; public ZugferdDocumentReader|string $document;
@ -52,8 +52,10 @@ class ZugferdEDocument extends AbstractService {
// Handle accordingly // Handle accordingly
$visualizer = new ZugferdVisualizer($this->document); $visualizer = new ZugferdVisualizer($this->document);
$visualizer->setDefaultTemplate(); $visualizer->setDefaultTemplate();
$visualizer->setRenderer(app(ZugferdVisualizerLaravelRenderer::class));
$visualizer->setPdfFontDefault("arial"); $visualizer->setPdfFontDefault("arial");
$visualizer->setPdfPaperSize('A4-P'); $visualizer->setPdfPaperSize('A4-P');
$visualizer->setTemplate('edocument.xinvoice');
$expense = ExpenseFactory::create($user->company()->id, $user->id); $expense = ExpenseFactory::create($user->company()->id, $user->id);
$expense->date = $documentdate; $expense->date = $documentdate;
@ -71,7 +73,7 @@ class ZugferdEDocument extends AbstractService {
if ($taxCurrency && $taxCurrency != $invoiceCurrency) { if ($taxCurrency && $taxCurrency != $invoiceCurrency) {
$expense->private_notes = ctrans("texts.tax_currency_mismatch"); $expense->private_notes = ctrans("texts.tax_currency_mismatch");
} }
$expense->uses_inclusive_taxes = false; $expense->uses_inclusive_taxes = True;
$expense->amount = $grandTotalAmount; $expense->amount = $grandTotalAmount;
$counter = 1; $counter = 1;
if ($this->document->firstDocumentTax()) { if ($this->document->firstDocumentTax()) {
@ -84,18 +86,15 @@ class ZugferdEDocument extends AbstractService {
} }
$this->document->getDocumentSeller($name, $buyer_id, $buyer_description); $this->document->getDocumentSeller($name, $buyer_id, $buyer_description);
$this->document->getDocumentSellerContact($person_name, $person_department, $contact_phone, $contact_fax, $contact_email); $this->document->getDocumentSellerContact($person_name, $person_department, $contact_phone, $contact_fax, $contact_email);
$this->document->getDocumentSellerAddress($address_1, $address_2, $address_3, $postcode, $city, $country, $subdivision);
$this->document->getDocumentSellerTaxRegistration($taxtype); $this->document->getDocumentSellerTaxRegistration($taxtype);
$taxid = null; $taxid = null;
if (array_key_exists("VA", $taxtype)) { if (array_key_exists("VA", $taxtype)) {
$taxid = $taxtype["VA"]; $taxid = $taxtype["VA"];
} }
// TODO find vendor $vendor = Vendor::where('vat_number', $taxid)->first();
$vendor = Vendor::whereHas('contacts', function ($q) use($contact_email, $taxid) {
$q->where('email',$contact_email)->where('vat_number', $taxid);
})->first();
if (!empty($vendor)) {
if ($vendor) {
// Vendor found // Vendor found
$expense->vendor_id = $vendor->id; $expense->vendor_id = $vendor->id;
} else { } else {
@ -104,12 +103,16 @@ class ZugferdEDocument extends AbstractService {
if ($taxid != null) { if ($taxid != null) {
$vendor->vat_number = $taxid; $vendor->vat_number = $taxid;
} }
#$vendor->email = $contact_email; $vendor->currency_id = Currency::whereCode($invoiceCurrency)->first()->id;
$vendor->phone = $contact_phone;
$vendor->address1 = $address_1;
$vendor->address2 = $address_2;
$vendor->city = $city;
$vendor->postal_code = $postcode;
$vendor->country_id = Country::where('iso_3166_2', $country)->first()->id;
$vendor->save(); $vendor->save();
$expense->vendor_id = $vendor->id; $expense->vendor_id = $vendor->id;
// Vendor not found
// Handle accordingly
} }
$expense->transaction_reference = $documentno; $expense->transaction_reference = $documentno;
} }
@ -123,3 +126,4 @@ class ZugferdEDocument extends AbstractService {
return $expense; return $expense;
} }
} }