Skip to content

Commit

Permalink
Updates for ANAF v8 (#8)
Browse files Browse the repository at this point in the history
* Update to Anaf V8

* Update README.md

* Update social.png

* Pint
  • Loading branch information
ciungulete committed Apr 2, 2023
1 parent c43a17c commit 3e2b9e0
Show file tree
Hide file tree
Showing 10 changed files with 98 additions and 46 deletions.
11 changes: 6 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ $balanceSheet->toArray(); // ['year' => '', 'tax_identification_number' => '', '
```
_For balance sheets, the indicators may vary depending on the type of company, as specified by ANAF. I recommend you to use var_dump to observe the type of indicators. The vast majority of companies have the indicators from the example above_

### [Info](https://static.anaf.ro/static/10/Anaf/Informatii_R/Servicii_web/doc_WS_V7.txt) Resource
### [Info](https://static.anaf.ro/static/10/Anaf/Informatii_R/Servicii_web/doc_WS_V8.txt) Resource

Checking taxpayers who are registered according to art. 316 of the Fiscal Code in Romania, according to the Register of taxable persons who apply the VAT system upon receipt, according to the Register of inactive/reactive taxpayers, according to the Register of persons who apply the broken down payment of VAT and respectively the RO e-Invoice Register.
```php
Expand All @@ -101,10 +101,11 @@ $companyInfo->vatRegistration;

/* Accessible information in vat registration */
$companyInfo->vatRegistration->status;
$companyInfo->vatRegistration->startDate;
$companyInfo->vatRegistration->stopDate;
$companyInfo->vatRegistration->stopEffectiveDate;
$companyInfo->vatRegistration->message;
//vatPeriods is an array from ANAF v8
$companyInfo->vatRegistration->vatPeriods[0]->startDate
$companyInfo->vatRegistration->vatPeriods[0]->stopDate;
$companyInfo->vatRegistration->vatPeriods[0]->stopEffectiveDate;
$companyInfo->vatRegistration->vatPeriods[0]->message;

$companyInfo->vatAtCheckout;

Expand Down
Binary file modified art/social.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 3 additions & 3 deletions src/Resources/Info.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ final class Info
/**
* Get public info about the given tax identification number
*
* @see https://static.anaf.ro/static/10/Anaf/Informatii_R/Servicii_web/doc_WS_V7.txt
* @see https://static.anaf.ro/static/10/Anaf/Informatii_R/Servicii_web/doc_WS_V8.txt
*/
public function get(): GetResponse
{
Expand All @@ -25,10 +25,10 @@ public function get(): GetResponse
],
];

$payload = Payload::create('PlatitorTvaRest/api/v7/ws/tva', $parameters);
$payload = Payload::create('PlatitorTvaRest/api/v8/ws/tva', $parameters);

/**
* @var array{cod: int, message: string, found: array<int, array{date_generale: array{cui: int, data: string, denumire: string, adresa: string, nrRegCom: string, telefon: string, fax: string, codPostal: string, act: string, stare_inregistrare: string, data_inregistrare: string, cod_CAEN: string, iban: string, statusRO_e_Factura: bool, organFiscalCompetent: string}, inregistrare_scop_Tva: array{scpTVA: bool, data_inceput_ScpTVA: string, data_sfarsit_ScpTVA: string, data_anul_imp_ScpTVA: string, mesaj_ScpTVA: string}, inregistrare_RTVAI: array{dataInceputTvaInc: string, dataSfarsitTvaInc: string, dataActualizareTvaInc: string, dataPublicareTvaInc: string, tipActTvaInc: string, statusTvaIncasare: bool}, stare_inactiv: array{dataInactivare: string, dataReactivare: string, dataPublicare: string, dataRadiere: string, statusInactivi: bool}, inregistrare_SplitTVA: array{dataInceputSplitTVA: string, dataAnulareSplitTVA: string, statusSplitTVA: bool}, adresa_sediu_social: array{sdenumire_Strada: string, snumar_Strada: string, sdenumire_Localitate: string, scod_Localitate: string, sdenumire_Judet: string, scod_Judet: string, scod_JudetAuto: string, stara: string, sdetalii_Adresa: string, scod_Postal: string}, adresa_domiciliu_fiscal: array{ddenumire_Strada: string, dnumar_Strada: string, ddenumire_Localitate: string, dcod_Localitate: string, ddenumire_Judet: string, dcod_Judet: string, dcod_JudetAuto: string, dtara: string, ddetalii_Adresa: string, dcod_Postal: string}}>, notFound: array<int,string>} $result
* @var array{cod: int, message: string, found: array<int, array{date_generale: array{cui: int, data: string, denumire: string, adresa: string, nrRegCom: string, telefon: string, fax: string, codPostal: string, act: string, stare_inregistrare: string, data_inregistrare: string, cod_CAEN: string, iban: string, statusRO_e_Factura: bool, organFiscalCompetent: string}, inregistrare_scop_Tva: array{scpTVA: bool, perioade_TVA: array<int, array{data_inceput_ScpTVA: ?string, data_sfarsit_ScpTVA: ?string, data_anul_imp_ScpTVA: ?string, mesaj_ScpTVA: ?string}>}, inregistrare_RTVAI: array{dataInceputTvaInc: string, dataSfarsitTvaInc: string, dataActualizareTvaInc: string, dataPublicareTvaInc: string, tipActTvaInc: string, statusTvaIncasare: bool}, stare_inactiv: array{dataInactivare: string, dataReactivare: string, dataPublicare: string, dataRadiere: string, statusInactivi: bool}, inregistrare_SplitTVA: array{dataInceputSplitTVA: string, dataAnulareSplitTVA: string, statusSplitTVA: bool}, adresa_sediu_social: array{sdenumire_Strada: string, snumar_Strada: string, sdenumire_Localitate: string, scod_Localitate: string, sdenumire_Judet: string, scod_Judet: string, scod_JudetAuto: string, stara: string, sdetalii_Adresa: string, scod_Postal: string}, adresa_domiciliu_fiscal: array{ddenumire_Strada: string, dnumar_Strada: string, ddenumire_Localitate: string, dcod_Localitate: string, ddenumire_Judet: string, dcod_Judet: string, dcod_JudetAuto: string, dtara: string, ddetalii_Adresa: string, dcod_Postal: string}}>, notFound: array<int,string>} $result
*/
$result = $this->transporter->requestObject($payload);

Expand Down
6 changes: 3 additions & 3 deletions src/Responses/Info/GetResponse.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,12 @@
use Anaf\Responses\Concerns\ArrayAccessible;

/**
* @implements Response<array{general_data: array{tax_identification_number: int, search_date: string, company_name: string, address: string, registration_number: string, phone: string, fax: string, postal_code: string, document: string, registration_status: string, registration_date: string, activity_code: string, bank_account: string, ro_invoice_status: bool, authority_name: string}, vat_registration: array{status: bool, start_date: string, stop_date: string, stop_effective_date: string, message: string}, vat_at_checkout: array{start_date: string, stop_date: string, update_date: string, publish_date: string, updated_type: string}, inactive_state: array{inactivation_date: string, reactivation_date: string, publish_date: string, deletion_date: string, status: bool}, split_vat: array{start_date: string, stop_date: string, status: bool}, hq_address: array{street: string, no: string, city: string, city_code: string, county: string, county_code: string, county_short: string, country: string, details: string, postalCode: string}, fiscal_address: array{street: string, no: string, city: string, city_code: string, county: string, county_code: string, county_short: string, country: string, details: string, postalCode: string}}>
* @implements Response<array{general_data: array{tax_identification_number: int, search_date: string, company_name: string, address: string, registration_number: string, phone: string, fax: string, postal_code: string, document: string, registration_status: string, registration_date: string, activity_code: string, bank_account: string, ro_invoice_status: bool, authority_name: string}, vat_registration: array{status: bool, vat_periods: array<int, array{start_date: ?string, stop_date: ?string, stop_effective_date: ?string, message: ?string}>}, vat_at_checkout: array{start_date: string, stop_date: string, update_date: string, publish_date: string, updated_type: string}, inactive_state: array{inactivation_date: string, reactivation_date: string, publish_date: string, deletion_date: string, status: bool}, split_vat: array{start_date: string, stop_date: string, status: bool}, hq_address: array{street: string, no: string, city: string, city_code: string, county: string, county_code: string, county_short: string, country: string, details: string, postalCode: string}, fiscal_address: array{street: string, no: string, city: string, city_code: string, county: string, county_code: string, county_short: string, country: string, details: string, postalCode: string}}>
*/
final class GetResponse implements Response
{
/**
* @use ArrayAccessible<array{general_data: array{tax_identification_number: int, search_date: string, company_name: string, address: string, registration_number: string, phone: string, fax: string, postal_code: string, document: string, registration_status: string, registration_date: string, activity_code: string, bank_account: string, ro_invoice_status: bool, authority_name: string}, vat_registration: array{status: bool, start_date: string, stop_date: string, stop_effective_date: string, message: string}, vat_at_checkout: array{start_date: string, stop_date: string, update_date: string, publish_date: string, updated_type: string}, inactive_state: array{inactivation_date: string, reactivation_date: string, publish_date: string, deletion_date: string, status: bool}, split_vat: array{start_date: string, stop_date: string, status: bool}, hq_address: array{street: string, no: string, city: string, city_code: string, county: string, county_code: string, county_short: string, country: string, details: string, postalCode: string}, fiscal_address: array{street: string, no: string, city: string, city_code: string, county: string, county_code: string, county_short: string, country: string, details: string, postalCode: string}}>
* @use ArrayAccessible<array{general_data: array{tax_identification_number: int, search_date: string, company_name: string, address: string, registration_number: string, phone: string, fax: string, postal_code: string, document: string, registration_status: string, registration_date: string, activity_code: string, bank_account: string, ro_invoice_status: bool, authority_name: string}, vat_registration: array{status: bool, vat_periods: array<int, array{start_date: ?string, stop_date: ?string, stop_effective_date: ?string, message: ?string}>}, vat_at_checkout: array{start_date: string, stop_date: string, update_date: string, publish_date: string, updated_type: string}, inactive_state: array{inactivation_date: string, reactivation_date: string, publish_date: string, deletion_date: string, status: bool}, split_vat: array{start_date: string, stop_date: string, status: bool}, hq_address: array{street: string, no: string, city: string, city_code: string, county: string, county_code: string, county_short: string, country: string, details: string, postalCode: string}, fiscal_address: array{street: string, no: string, city: string, city_code: string, county: string, county_code: string, county_short: string, country: string, details: string, postalCode: string}}>
*/
use ArrayAccessible;

Expand All @@ -31,7 +31,7 @@ private function __construct(
/**
* Acts as static factory, and returns a new Response instance.
*
* @param array{date_generale: array{cui: int, data: string, denumire: string, adresa: string, nrRegCom: string, telefon: string, fax: string, codPostal: string, act: string, stare_inregistrare: string, data_inregistrare: string, cod_CAEN: string, iban: string, statusRO_e_Factura: bool, organFiscalCompetent: string}, inregistrare_scop_Tva: array{scpTVA: bool, data_inceput_ScpTVA: string, data_sfarsit_ScpTVA: string, data_anul_imp_ScpTVA: string, mesaj_ScpTVA: string}, inregistrare_RTVAI: array{dataInceputTvaInc: string, dataSfarsitTvaInc: string, dataActualizareTvaInc: string, dataPublicareTvaInc: string, tipActTvaInc: string, statusTvaIncasare: bool}, stare_inactiv: array{dataInactivare: string, dataReactivare: string, dataPublicare: string, dataRadiere: string, statusInactivi: bool}, inregistrare_SplitTVA: array{dataInceputSplitTVA: string, dataAnulareSplitTVA: string, statusSplitTVA: bool}, adresa_sediu_social: array{sdenumire_Strada: string, snumar_Strada: string, sdenumire_Localitate: string, scod_Localitate: string, sdenumire_Judet: string, scod_Judet: string, scod_JudetAuto: string, stara: string, sdetalii_Adresa: string, scod_Postal: string}, adresa_domiciliu_fiscal: array{ddenumire_Strada: string, dnumar_Strada: string, ddenumire_Localitate: string, dcod_Localitate: string, ddenumire_Judet: string, dcod_Judet: string, dcod_JudetAuto: string, dtara: string, ddetalii_Adresa: string, dcod_Postal: string}} $attributes
* @param array{date_generale: array{cui: int, data: string, denumire: string, adresa: string, nrRegCom: string, telefon: string, fax: string, codPostal: string, act: string, stare_inregistrare: string, data_inregistrare: string, cod_CAEN: string, iban: string, statusRO_e_Factura: bool, organFiscalCompetent: string}, inregistrare_scop_Tva: array{scpTVA: bool, perioade_TVA: array<int,array{data_inceput_ScpTVA: ?string, data_sfarsit_ScpTVA: ?string, data_anul_imp_ScpTVA: ?string, mesaj_ScpTVA: ?string}>}, inregistrare_RTVAI: array{dataInceputTvaInc: string, dataSfarsitTvaInc: string, dataActualizareTvaInc: string, dataPublicareTvaInc: string, tipActTvaInc: string, statusTvaIncasare: bool}, stare_inactiv: array{dataInactivare: string, dataReactivare: string, dataPublicare: string, dataRadiere: string, statusInactivi: bool}, inregistrare_SplitTVA: array{dataInceputSplitTVA: string, dataAnulareSplitTVA: string, statusSplitTVA: bool}, adresa_sediu_social: array{sdenumire_Strada: string, snumar_Strada: string, sdenumire_Localitate: string, scod_Localitate: string, sdenumire_Judet: string, scod_Judet: string, scod_JudetAuto: string, stara: string, sdetalii_Adresa: string, scod_Postal: string}, adresa_domiciliu_fiscal: array{ddenumire_Strada: string, dnumar_Strada: string, ddenumire_Localitate: string, dcod_Localitate: string, ddenumire_Judet: string, dcod_Judet: string, dcod_JudetAuto: string, dtara: string, ddetalii_Adresa: string, dcod_Postal: string}} $attributes
*/
public static function from(array $attributes): self
{
Expand Down
42 changes: 42 additions & 0 deletions src/Responses/Info/RetrieveResponseVatPeriods.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
<?php

declare(strict_types=1);

namespace Anaf\Responses\Info;

final class RetrieveResponseVatPeriods
{
private function __construct(
public readonly ?string $startDate,
public readonly ?string $stopDate,
public readonly ?string $stopEffectiveDate,
public readonly ?string $message,
) {
}

/**
* @param array{data_inceput_ScpTVA: ?string, data_sfarsit_ScpTVA: ?string, data_anul_imp_ScpTVA: ?string, mesaj_ScpTVA: ?string} $attributes
*/
public static function from(array $attributes): self
{
return new self(
$attributes['data_inceput_ScpTVA'],
$attributes['data_sfarsit_ScpTVA'],
$attributes['data_anul_imp_ScpTVA'],
$attributes['mesaj_ScpTVA'],
);
}

/**
* @return array{start_date: ?string, stop_date: ?string, stop_effective_date: ?string, message: ?string}
*/
public function toArray(): array
{
return [
'start_date' => $this->startDate,
'stop_date' => $this->stopDate,
'stop_effective_date' => $this->stopEffectiveDate,
'message' => $this->message,
];
}
}
29 changes: 15 additions & 14 deletions src/Responses/Info/RetrieveResponseVatRegistration.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,40 +6,41 @@

final class RetrieveResponseVatRegistration
{
/**
* @param array<int, RetrieveResponseVatPeriods> $vatPeriods
*/
private function __construct(
public readonly bool $status,
public readonly string $startDate,
public readonly string $stopDate,
public readonly string $stopEffectiveDate,
public readonly string $message,
public readonly array $vatPeriods,
) {
}

/**
* @param array{scpTVA: bool, data_inceput_ScpTVA: string, data_sfarsit_ScpTVA: string, data_anul_imp_ScpTVA: string, mesaj_ScpTVA: string} $attributes
* @param array{scpTVA: bool, perioade_TVA: array<int, array{data_inceput_ScpTVA: ?string, data_sfarsit_ScpTVA: ?string, data_anul_imp_ScpTVA: ?string, mesaj_ScpTVA: ?string}>} $attributes
*/
public static function from(array $attributes): self
{
$vatPeriods = array_map(fn (array $result): RetrieveResponseVatPeriods => RetrieveResponseVatPeriods::from(
$result
), $attributes['perioade_TVA']);

return new self(
$attributes['scpTVA'],
$attributes['data_inceput_ScpTVA'],
$attributes['data_sfarsit_ScpTVA'],
$attributes['data_anul_imp_ScpTVA'],
$attributes['mesaj_ScpTVA'],
$vatPeriods,
);
}

/**
* @return array{status: bool, start_date: string, stop_date: string, stop_effective_date: string, message: string}
* @return array{status: bool, vat_periods: array<int, array{start_date: ?string, stop_date: ?string, stop_effective_date: ?string, message: ?string}>}
*/
public function toArray(): array
{
return [
'status' => $this->status,
'start_date' => $this->startDate,
'stop_date' => $this->stopDate,
'stop_effective_date' => $this->stopEffectiveDate,
'message' => $this->message,
'vat_periods' => array_map(
static fn (RetrieveResponseVatPeriods $result): array => $result->toArray(),
$this->vatPeriods,
),
];
}
}
28 changes: 18 additions & 10 deletions tests/Fixtures/Info.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,15 @@ function getCompanyInfo(): array
'authority_name' => 'Serviciul Fiscal Municipal Câmpulung',
],
'vat_registration' => [
'status' => false,
'start_date' => '',
'stop_date' => '',
'stop_effective_date' => '',
'message' => 'nu figureaza in registre ',
'status' => true,
'vat_periods' => [
[
'start_date' => '2023-01-25',
'stop_date' => '',
'stop_effective_date' => '',
'message' => '',
],
],
],
'vat_at_checkout' => [
'start_date' => '',
Expand Down Expand Up @@ -104,11 +108,15 @@ function getCompanyAnafInfo(): array
'organFiscalCompetent' => 'Serviciul Fiscal Municipal Câmpulung',
],
'inregistrare_scop_Tva' => [
'scpTVA' => false,
'data_inceput_ScpTVA' => '',
'data_sfarsit_ScpTVA' => '',
'data_anul_imp_ScpTVA' => '',
'mesaj_ScpTVA' => 'nu figureaza in registre ',
'scpTVA' => true,
'perioade_TVA' => [
0 => [
'data_inceput_ScpTVA' => '2023-01-25',
'data_sfarsit_ScpTVA' => '',
'data_anul_imp_ScpTVA' => '',
'mesaj_ScpTVA' => '',
],
],
],
'inregistrare_RTVAI' => [
'dataInceputTvaInc' => '',
Expand Down
2 changes: 1 addition & 1 deletion tests/Resources/Info.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
use Anaf\Responses\Info\GetResponse;

test('get', function () {
$client = mockClient('POST', 'PlatitorTvaRest/api/v7/ws/tva', [], getCompanyAnafInfo());
$client = mockClient('POST', 'PlatitorTvaRest/api/v8/ws/tva', [], getCompanyAnafInfo());

$result = $client->info()->get();

Expand Down
Loading

0 comments on commit 3e2b9e0

Please sign in to comment.