diff --git a/app/Jobs/Invoice/CreateXInvoice.php b/app/Jobs/Invoice/CreateXInvoice.php index ee802533a337..964d3a73b35b 100644 --- a/app/Jobs/Invoice/CreateXInvoice.php +++ b/app/Jobs/Invoice/CreateXInvoice.php @@ -69,7 +69,7 @@ class CreateXInvoice implements ShouldQueue ->setDocumentInformation($invoice->number, "380", date_create($invoice->date), $invoice->client->getCurrencyCode()) ->addDocumentNote($invoice->public_notes) ->setDocumentSupplyChainEvent(date_create($invoice->date)) - ->setDocumentSeller($company->name) +// ->setDocumentSeller($company->name) ->setDocumentSellerAddress($company->address1, "", "", $company->postal_code, $company->city, $company->country->country->iso_3166_2) ->setDocumentBuyer($client->name, $client->number) ->setDocumentBuyerAddress($client->address1, "", "", $client->postal_code, $client->city, $client->country->country->iso_3166_2) @@ -286,7 +286,7 @@ class CreateXInvoice implements ShouldQueue if ($taxnet_3 > 0) { $xrechnung->addDocumentTax($taxtype3, "VAT", $taxnet_3, $taxamount_3, $invoice->tax_rate3); } - $xrechnung->writeFile(explode(".", $client->invoice_filepath($invoice->invitations->first()))[0] . "-xinvoice.xml"); + $xrechnung->writeFile(explode(".", $client->xinvoice_filepath($invoice->invitations->first()))[0] . "-xinvoice.xml"); $filepath_pdf = $client->invoice_filepath($invoice->invitations->first()); $disk = config('filesystems.default'); diff --git a/app/Models/Client.php b/app/Models/Client.php index 25b553f25f4c..d817e9b4c69f 100644 --- a/app/Models/Client.php +++ b/app/Models/Client.php @@ -732,6 +732,12 @@ class Client extends BaseModel implements HasLocalePreference return $this->company->company_key.'/'.$this->client_hash.'/'.$contact_key.'/invoices/'; } + public function xinvoice_filepath($invitation) + { + $contact_key = $invitation->contact->contact_key; + + return $this->company->company_key.'/'.$this->client_hash.'/'.$contact_key.'/xinvoice/'; + } public function quote_filepath($invitation) { diff --git a/app/Services/Invoice/GetInvoiceXInvoice.php b/app/Services/Invoice/GetInvoiceXInvoice.php index a4f2e0e37e9b..336f1a6b8cbd 100644 --- a/app/Services/Invoice/GetInvoiceXInvoice.php +++ b/app/Services/Invoice/GetInvoiceXInvoice.php @@ -38,7 +38,7 @@ class GetInvoiceXInvoice extends AbstractService $invitation = $this->invoice->invitations->first(); } - $path = $this->invoice->client->invoice_filepath($invitation); + $path = $this->invoice->client->xinvoice_filepath($invitation); $file_path = $path.$this->invoice->numberFormatter().'-xinvoice.xml'; diff --git a/app/Services/Invoice/InvoiceService.php b/app/Services/Invoice/InvoiceService.php index e37e5597bb64..d28ee76942cb 100644 --- a/app/Services/Invoice/InvoiceService.php +++ b/app/Services/Invoice/InvoiceService.php @@ -19,6 +19,7 @@ use App\Libraries\Currency\Conversion\CurrencyApi; use App\Models\CompanyGateway; use App\Models\Expense; use App\Models\Invoice; +use App\Models\InvoiceInvitation; use App\Models\Payment; use App\Models\Task; use App\Utils\Ninja; @@ -448,7 +449,10 @@ class InvoiceService if ($force) { $this->invoice->invitations->each(function ($invitation) { (new CreateEntityPdf($invitation))->handle(); - (new CreateXInvoice($invitation))->handle(); + if ($invitation instanceof InvoiceInvitation) + { + (new CreateXInvoice($invitation->invoice))->handle(); + } }); return $this; @@ -456,7 +460,10 @@ class InvoiceService $this->invoice->invitations->each(function ($invitation) { CreateEntityPdf::dispatch($invitation); - CreateXInvoice::dispatch($invitation); + if ($invitation instanceof InvoiceInvitation) + { + CreateXInvoice::dispatch($invitation->invoice); + } }); } catch (\Exception $e) { nlog('failed creating invoices in Touch PDF'); diff --git a/routes/client.php b/routes/client.php index b77efaf61c7b..f40906d2a3bf 100644 --- a/routes/client.php +++ b/routes/client.php @@ -96,7 +96,7 @@ Route::group(['middleware' => ['auth:contact', 'locale', 'domain_db','check_clie Route::resource('documents', App\Http\Controllers\ClientPortal\DocumentController::class)->only(['index', 'show']); Route::get('subscriptions/{recurring_invoice}/plan_switch/{target}', [App\Http\Controllers\ClientPortal\SubscriptionPlanSwitchController::class, 'index'])->name('subscription.plan_switch'); - + Route::get('subscriptions/{recurring_invoice}', [SubscriptionController::class, 'show'])->middleware('portal_enabled')->name('subscriptions.show'); Route::get('subscriptions', [SubscriptionController::class, 'index'])->middleware('portal_enabled')->name('subscriptions.index'); @@ -124,6 +124,7 @@ Route::group(['middleware' => ['invite_db'], 'prefix' => 'client', 'as' => 'clie Route::get('credit/{invitation_key}', [App\Http\Controllers\ClientPortal\InvitationController::class, 'creditRouter']); Route::get('recurring_invoice/{invitation_key}/download_pdf', [RecurringInvoiceController::class, 'downloadPdf'])->name('recurring_invoice.download_invitation_key'); Route::get('invoice/{invitation_key}/download_pdf', [InvoiceController::class, 'downloadPdf'])->name('invoice.download_invitation_key'); + Route::get('invoice/{invitation_key}/download_xinvoice', [InvoiceController::class, 'downloadXInvoice'])->name('invoice.download_xinvoice'); Route::get('quote/{invitation_key}/download_pdf', [QuoteController::class, 'downloadPdf'])->name('quote.download_invitation_key'); Route::get('credit/{invitation_key}/download_pdf', [CreditController::class, 'downloadPdf'])->name('credit.download_invitation_key'); Route::get('{entity}/{invitation_key}/download', [App\Http\Controllers\ClientPortal\InvitationController::class, 'routerForDownload']);