From 42da98a132bb9e5c8f1804ecb6447586d36e1193 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Mon, 8 Jul 2024 11:25:28 +1000 Subject: [PATCH] E Invoice Validation --- .../Requests/Company/UpdateCompanyRequest.php | 6 +- ...ValidScheme.php => ValidCompanyScheme.php} | 7 +- .../Validation/Peppol/CompanyLevel.php | 303 ++++++++++++++++++ 3 files changed, 309 insertions(+), 7 deletions(-) rename app/Http/ValidationRules/EInvoice/{ValidScheme.php => ValidCompanyScheme.php} (83%) create mode 100644 app/Services/EDocument/Standards/Validation/Peppol/CompanyLevel.php diff --git a/app/Http/Requests/Company/UpdateCompanyRequest.php b/app/Http/Requests/Company/UpdateCompanyRequest.php index d69ac24a9c85..c48ee397ee0e 100644 --- a/app/Http/Requests/Company/UpdateCompanyRequest.php +++ b/app/Http/Requests/Company/UpdateCompanyRequest.php @@ -15,10 +15,8 @@ use App\Utils\Ninja; use App\Http\Requests\Request; use App\Utils\Traits\MakesHash; use App\DataMapper\CompanySettings; -use InvoiceNinja\EInvoice\EInvoice; use App\Http\ValidationRules\ValidSettingsRule; -use InvoiceNinja\EInvoice\Models\Peppol\Invoice; -use App\Http\ValidationRules\EInvoice\ValidScheme; +use App\Http\ValidationRules\EInvoice\ValidCompanyScheme; use App\Http\ValidationRules\Company\ValidSubdomain; class UpdateCompanyRequest extends Request @@ -67,7 +65,7 @@ class UpdateCompanyRequest extends Request $rules['smtp_local_domain'] = 'sometimes|string|nullable'; // $rules['smtp_verify_peer'] = 'sometimes|string'; - // $rules['e_invoice'] = ['sometimes','nullable', new ValidScheme()]; + $rules['e_invoice'] = ['sometimes','nullable', new ValidCompanyScheme()]; if (isset($input['portal_mode']) && ($input['portal_mode'] == 'domain' || $input['portal_mode'] == 'iframe')) { $rules['portal_domain'] = 'bail|nullable|sometimes|url'; diff --git a/app/Http/ValidationRules/EInvoice/ValidScheme.php b/app/Http/ValidationRules/EInvoice/ValidCompanyScheme.php similarity index 83% rename from app/Http/ValidationRules/EInvoice/ValidScheme.php rename to app/Http/ValidationRules/EInvoice/ValidCompanyScheme.php index bdd7a450df57..bd5777bf30ea 100644 --- a/app/Http/ValidationRules/EInvoice/ValidScheme.php +++ b/app/Http/ValidationRules/EInvoice/ValidCompanyScheme.php @@ -11,6 +11,7 @@ namespace App\Http\ValidationRules\EInvoice; +use App\Services\EDocument\Standards\Validation\Peppol\CompanyLevel; use Closure; use InvoiceNinja\EInvoice\EInvoice; use Illuminate\Validation\Validator; @@ -19,9 +20,9 @@ use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Contracts\Validation\ValidatorAwareRule; /** - * Class BlackListRule. + * Class ValidScheme. */ -class ValidScheme implements ValidationRule, ValidatorAwareRule +class ValidCompanyScheme implements ValidationRule, ValidatorAwareRule { /** @@ -35,7 +36,7 @@ class ValidScheme implements ValidationRule, ValidatorAwareRule { $r = new EInvoice(); - $errors = $r->validateRequest($value['Invoice'], Invoice::class); + $errors = $r->validateRequest($value['Invoice'], CompanyLevel::class); foreach ($errors as $key => $msg) { diff --git a/app/Services/EDocument/Standards/Validation/Peppol/CompanyLevel.php b/app/Services/EDocument/Standards/Validation/Peppol/CompanyLevel.php new file mode 100644 index 000000000000..9de7f548e714 --- /dev/null +++ b/app/Services/EDocument/Standards/Validation/Peppol/CompanyLevel.php @@ -0,0 +1,303 @@ + 'Y-m-d'])] + // #[SerializedName('cbc:IssueDate')] + // public ?DateTime $IssueDate; + + // /** @var ?\DateTime */ + // #[Context([DateTimeNormalizer::FORMAT_KEY => 'Y-m-d\TH:i:s.uP'])] + // #[SerializedName('cbc:IssueTime')] + // public ?DateTime $IssueTime; + + // /** @var ?\DateTime */ + // #[Context([DateTimeNormalizer::FORMAT_KEY => 'Y-m-d'])] + // #[SerializedName('cbc:DueDate')] + // public ?DateTime $DueDate; + + /** @var InvoiceTypeCode */ + #[SerializedName('cbc:InvoiceTypeCode')] + public $InvoiceTypeCode; + + /** @var string */ + #[SerializedName('cbc:Note')] + public string $Note; + + /** @var ?\DateTime */ + #[Context([DateTimeNormalizer::FORMAT_KEY => 'Y-m-d'])] + #[SerializedName('cbc:TaxPointDate')] + public ?DateTime $TaxPointDate; + + /** @var DocumentCurrencyCode */ + #[SerializedName('cbc:DocumentCurrencyCode')] + public $DocumentCurrencyCode; + + /** @var TaxCurrencyCode */ + #[SerializedName('cbc:TaxCurrencyCode')] + public $TaxCurrencyCode; + + /** @var PricingCurrencyCode */ + #[SerializedName('cbc:PricingCurrencyCode')] + public $PricingCurrencyCode; + + /** @var PaymentCurrencyCode */ + #[SerializedName('cbc:PaymentCurrencyCode')] + public $PaymentCurrencyCode; + + /** @var PaymentAlternativeCurrencyCode */ + #[SerializedName('cbc:PaymentAlternativeCurrencyCode')] + public $PaymentAlternativeCurrencyCode; + + // /** @var AccountingCostCode */ + // #[SerializedName('cbc:AccountingCostCode')] + // public $AccountingCostCode; + + // /** @var string */ + // #[SerializedName('cbc:AccountingCost')] + // public string $AccountingCost; + + // /** @var LineCountNumeric */ + // #[SerializedName('cbc:LineCountNumeric')] + // public $LineCountNumeric; + + // /** @var string */ + // #[SerializedName('cbc:BuyerReference')] + // public string $BuyerReference; + + // /** @var InvoicePeriod[] */ + // #[SerializedName('cac:InvoicePeriod')] + // public array $InvoicePeriod; + + // /** @var OrderReference */ + // #[SerializedName('cac:OrderReference')] + // public $OrderReference; + + // /** @var BillingReference[] */ + // #[SerializedName('cac:BillingReference')] + // public array $BillingReference; + + /** @var DespatchDocumentReference[] */ + #[SerializedName('cac:DespatchDocumentReference')] + public array $DespatchDocumentReference; + + /** @var ReceiptDocumentReference[] */ + #[SerializedName('cac:ReceiptDocumentReference')] + public array $ReceiptDocumentReference; + + /** @var StatementDocumentReference[] */ + #[SerializedName('cac:StatementDocumentReference')] + public array $StatementDocumentReference; + + /** @var OriginatorDocumentReference[] */ + #[SerializedName('cac:OriginatorDocumentReference')] + public array $OriginatorDocumentReference; + + /** @var ContractDocumentReference[] */ + #[SerializedName('cac:ContractDocumentReference')] + public array $ContractDocumentReference; + + /** @var AdditionalDocumentReference[] */ + #[SerializedName('cac:AdditionalDocumentReference')] + public array $AdditionalDocumentReference; + + /** @var ProjectReference[] */ + #[SerializedName('cac:ProjectReference')] + public array $ProjectReference; + + // /** @var Signature[] */ + // #[SerializedName('cac:Signature')] + // public array $Signature; + + // /** @var AccountingSupplierParty */ + // #[NotNull] + // #[NotBlank] + // #[Valid] + // #[SerializedName('cac:AccountingSupplierParty')] + // public $AccountingSupplierParty; + + // /** @var AccountingCustomerParty */ + // #[NotNull] + // #[NotBlank] + // #[Valid] + // #[SerializedName('cac:AccountingCustomerParty')] + // public $AccountingCustomerParty; + + /** @var PayeeParty */ + #[SerializedName('cac:PayeeParty')] + public $PayeeParty; + + // /** @var BuyerCustomerParty */ + // #[SerializedName('cac:BuyerCustomerParty')] + // public $BuyerCustomerParty; + + // /** @var SellerSupplierParty */ + // #[SerializedName('cac:SellerSupplierParty')] + // public $SellerSupplierParty; + + /** @var TaxRepresentativeParty */ + #[SerializedName('cac:TaxRepresentativeParty')] + public $TaxRepresentativeParty; + + /** @var Delivery[] */ + #[SerializedName('cac:Delivery')] + public array $Delivery; + + /** @var DeliveryTerms */ + #[SerializedName('cac:DeliveryTerms')] + public $DeliveryTerms; + + /** @var PaymentMeans[] */ + #[SerializedName('cac:PaymentMeans')] + public array $PaymentMeans; + + /** @var PaymentTerms[] */ + #[SerializedName('cac:PaymentTerms')] + public array $PaymentTerms; + + // /** @var PrepaidPayment[] */ + // #[SerializedName('cac:PrepaidPayment')] + // public array $PrepaidPayment; + + // /** @var AllowanceCharge[] */ + // #[SerializedName('cac:AllowanceCharge')] + // public array $AllowanceCharge; + + // /** @var TaxExchangeRate */ + // #[SerializedName('cac:TaxExchangeRate')] + // public $TaxExchangeRate; + + // /** @var PricingExchangeRate */ + // #[SerializedName('cac:PricingExchangeRate')] + // public $PricingExchangeRate; + + // /** @var PaymentExchangeRate */ + // #[SerializedName('cac:PaymentExchangeRate')] + // public $PaymentExchangeRate; + + // /** @var PaymentAlternativeExchangeRate */ + // #[SerializedName('cac:PaymentAlternativeExchangeRate')] + // public $PaymentAlternativeExchangeRate; + + // /** @var TaxTotal[] */ + // #[SerializedName('cac:TaxTotal')] + // public array $TaxTotal; + + // /** @var WithholdingTaxTotal[] */ + // #[SerializedName('cac:WithholdingTaxTotal')] + // public array $WithholdingTaxTotal; + + // /** @var LegalMonetaryTotal */ + // #[NotNull] + // #[NotBlank] + // #[Valid] + // #[SerializedName('cac:LegalMonetaryTotal')] + // public $LegalMonetaryTotal; + + // /** @var InvoiceLine[] */ + // #[NotNull] + // #[NotBlank] + // #[Valid] + // #[SerializedName('cac:InvoiceLine')] + // public array $InvoiceLine; +}