mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2026-03-03 00:57:02 +00:00
Fixes for invoice period in PEPPOL
This commit is contained in:
@@ -114,13 +114,19 @@ class RecurringInvoiceToInvoiceFactory
|
||||
|
||||
$end_date = $end_date->format('Y-m-d');
|
||||
|
||||
$einvoice = new \InvoiceNinja\EInvoice\Models\Peppol\Invoice();
|
||||
// $einvoice = new \InvoiceNinja\EInvoice\Models\Peppol\Invoice();
|
||||
// $ip = new \InvoiceNinja\EInvoice\Models\Peppol\PeriodType\InvoicePeriod();
|
||||
// $ip->StartDate = new \DateTime($start_date);
|
||||
// $ip->EndDate = new \DateTime($end_date);
|
||||
// $einvoice->InvoicePeriod = [$ip];
|
||||
|
||||
$ip = new \InvoiceNinja\EInvoice\Models\Peppol\PeriodType\InvoicePeriod();
|
||||
$ip->StartDate = new \DateTime($start_date);
|
||||
$ip->EndDate = new \DateTime($end_date);
|
||||
$einvoice->InvoicePeriod = [$ip];
|
||||
// 2026-01-12 - To prevent storing datetime objects in the database, we manually build the InvoicePeriod object
|
||||
$einvoice = new \stdClass();
|
||||
|
||||
$invoice_period = new \stdClass();
|
||||
$invoice_period->StartDate = $start_date;
|
||||
$invoice_period->EndDate = $end_date;
|
||||
$einvoice->InvoicePeriod = [$invoice_period];
|
||||
|
||||
$stub = new \stdClass();
|
||||
$stub->Invoice = $einvoice;
|
||||
|
||||
@@ -48,6 +48,7 @@ class EInvoiceController extends BaseController
|
||||
|
||||
match ($request->entity) {
|
||||
'invoices' => $data = $el->checkInvoice($request->getEntity()),
|
||||
'recurring_invoices' => $data = $el->checkRecurringInvoice($request->getEntity()),
|
||||
'clients' => $data = $el->checkClient($request->getEntity()),
|
||||
'companies' => $data = $el->checkCompany($request->getEntity()),
|
||||
default => $data['passes'] = false,
|
||||
|
||||
@@ -17,8 +17,9 @@ use App\Models\Client;
|
||||
use App\Models\Company;
|
||||
use App\Models\Invoice;
|
||||
use App\Http\Requests\Request;
|
||||
use App\Services\EDocument\Standards\Validation\Peppol\EntityLevel;
|
||||
use Illuminate\Validation\Rule;
|
||||
use App\Models\RecurringInvoice;
|
||||
use App\Services\EDocument\Standards\Validation\Peppol\EntityLevel;
|
||||
|
||||
class ValidateEInvoiceRequest extends Request
|
||||
{
|
||||
@@ -50,7 +51,7 @@ class ValidateEInvoiceRequest extends Request
|
||||
$user = auth()->user();
|
||||
|
||||
return [
|
||||
'entity' => 'required|bail|in:invoices,clients,companies',
|
||||
'entity' => 'required|bail|in:invoices,recurring_invoices,clients,companies',
|
||||
'entity_id' => ['required','bail', Rule::exists($this->entity, 'id')
|
||||
->when($this->entity != 'companies', function ($q) use ($user) {
|
||||
$q->where('company_id', $user->company()->id);
|
||||
@@ -81,6 +82,7 @@ class ValidateEInvoiceRequest extends Request
|
||||
|
||||
match ($this->entity) {
|
||||
'invoices' => $class = Invoice::class,
|
||||
'recurring_invoices' => $class = RecurringInvoice::class,
|
||||
'clients' => $class = Client::class,
|
||||
'companies' => $class = Company::class,
|
||||
default => $class = Invoice::class,
|
||||
|
||||
@@ -1349,9 +1349,13 @@ class Peppol extends AbstractService
|
||||
if (isset($this->invoice->e_invoice->Invoice->InvoicePeriod[0]) &&
|
||||
isset($this->invoice->e_invoice->Invoice->InvoicePeriod[0]->StartDate) &&
|
||||
isset($this->invoice->e_invoice->Invoice->InvoicePeriod[0]->EndDate)) {
|
||||
|
||||
$start_date = isset($this->invoice->e_invoice->Invoice->InvoicePeriod[0]->StartDate->date) ? $this->invoice->e_invoice->Invoice->InvoicePeriod[0]->StartDate->date :$this->invoice->e_invoice->Invoice->InvoicePeriod[0]->StartDate;
|
||||
$end_date = isset($this->invoice->e_invoice->Invoice->InvoicePeriod[0]->EndDate->date) ? $this->invoice->e_invoice->Invoice->InvoicePeriod[0]->EndDate->date : $this->invoice->e_invoice->Invoice->InvoicePeriod[0]->EndDate;
|
||||
|
||||
$ip = new \InvoiceNinja\EInvoice\Models\Peppol\PeriodType\InvoicePeriod();
|
||||
$ip->StartDate = new \DateTime($this->invoice->e_invoice->Invoice->InvoicePeriod[0]->StartDate);
|
||||
$ip->EndDate = new \DateTime($this->invoice->e_invoice->Invoice->InvoicePeriod[0]->EndDate);
|
||||
$ip->StartDate = new \DateTime($start_date);
|
||||
$ip->EndDate = new \DateTime($end_date);
|
||||
$this->p_invoice->InvoicePeriod = [$ip];
|
||||
}
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@ namespace App\Services\EDocument\Standards\Validation;
|
||||
use App\Models\Client;
|
||||
use App\Models\Company;
|
||||
use App\Models\Invoice;
|
||||
use App\Models\RecurringInvoice;
|
||||
|
||||
interface EntityLevelInterface
|
||||
{
|
||||
@@ -24,4 +25,6 @@ interface EntityLevelInterface
|
||||
|
||||
public function checkInvoice(Invoice $invoice): array;
|
||||
|
||||
public function checkRecurringInvoice(RecurringInvoice $recurring_invoice): array;
|
||||
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
namespace App\Services\EDocument\Standards\Validation\Peppol;
|
||||
|
||||
use App\Exceptions\PeppolValidationException;
|
||||
use XSLTProcessor;
|
||||
use App\Models\Quote;
|
||||
use App\Models\Client;
|
||||
use App\Models\Credit;
|
||||
@@ -20,11 +20,12 @@ use App\Models\Vendor;
|
||||
use App\Models\Company;
|
||||
use App\Models\Invoice;
|
||||
use App\Models\PurchaseOrder;
|
||||
use App\Services\EDocument\Standards\Peppol;
|
||||
use App\Services\EDocument\Standards\Validation\XsltDocumentValidator;
|
||||
use App\Services\EDocument\Standards\Validation\EntityLevelInterface;
|
||||
use App\Models\RecurringInvoice;
|
||||
use Illuminate\Support\Facades\App;
|
||||
use XSLTProcessor;
|
||||
use App\Services\EDocument\Standards\Peppol;
|
||||
use App\Exceptions\PeppolValidationException;
|
||||
use App\Services\EDocument\Standards\Validation\EntityLevelInterface;
|
||||
use App\Services\EDocument\Standards\Validation\XsltDocumentValidator;
|
||||
|
||||
class EntityLevel implements EntityLevelInterface
|
||||
{
|
||||
@@ -124,6 +125,11 @@ class EntityLevel implements EntityLevelInterface
|
||||
|
||||
}
|
||||
|
||||
public function checkRecurringInvoice(RecurringInvoice $recurring_invoice): array
|
||||
{
|
||||
return ['passes' => true];
|
||||
}
|
||||
|
||||
public function checkInvoice(Invoice $invoice): array
|
||||
{
|
||||
$this->init($invoice->client->locale());
|
||||
|
||||
@@ -19,6 +19,7 @@ use App\Models\Vendor;
|
||||
use App\Models\Company;
|
||||
use App\Models\Invoice;
|
||||
use App\Models\PurchaseOrder;
|
||||
use App\Models\RecurringInvoice;
|
||||
use Illuminate\Support\Facades\App;
|
||||
use App\Services\EDocument\Standards\Validation\EntityLevelInterface;
|
||||
|
||||
@@ -84,6 +85,11 @@ class EntityLevel implements EntityLevelInterface
|
||||
|
||||
}
|
||||
|
||||
public function checkRecurringInvoice(RecurringInvoice $recurring_invoice): array
|
||||
{
|
||||
return ['passes' => true];
|
||||
}
|
||||
|
||||
public function checkInvoice(Invoice $invoice): array
|
||||
{
|
||||
|
||||
|
||||
Reference in New Issue
Block a user