andalisolutions / anaf-php
描述
v0.7.4
2024-07-31 22:08 UTC
Requires
- php: ^8.1.0
- ext-iconv: *
- ext-libxml: *
- ext-simplexml: *
- guzzlehttp/guzzle: ^7.5.0
- php-http/discovery: ^1.19
Requires (Dev)
- laravel/pint: ^1.13.7
- mockery/mockery: ^1.6
- nunomaduro/collision: ^7.0.0
- pestphp/pest: ^2.30.0
- pestphp/pest-plugin-arch: ^2.5
- pestphp/pest-plugin-type-coverage: ^2.7
- phpstan/phpstan: ^1.10.54
- rector/rector: ^1.0.3
- symfony/var-dumper: ^6.2.2
README
ANAF PHP 是一个 PHP API 客户端,允许您与 ANAF 网络服务 交互。
开始使用
需要 PHP 8.1+
首先,通过 Composer 包管理器安装 ANAF
composer require andalisolutions/anaf-php
然后,您可以通过两种方式创建 ANAF
客户端
/* * Client used for unauthenticated requests */ $client = Anaf::client(); /* * Client used for authenticated requests */ $authorizedClient = Anaf::authorizedClient($apiKey); /* * Build a client with a specific base URI, staging and more. Example: */ $factoryClient = Anaf::factory() ->withApiKey($apiKey) ->staging() ->withBaseUri('https://webservicesp.anaf.ro') ->make();
您可以使用 oauth2-anaf 包来获取 API 密钥。
待办事项
- 获取与经济代理人相关的财务报表/年度会计报告中的公开信息。(文档)
- 通过
税号
(CUI/Vat Number) 获取关于公司的信息。(文档) - 获取注册在适用特别制度农民登记册中的纳税人信息。(文档)
- 获取注册在宗教实体/单位登记册中的纳税人信息。(文档)
- 访问 SPV 提供的功能。(文档)
- 关于电子发票 RO e-Factura 的国家系统。(文档)
- RO e-Transport 集成电子系统。(文档)
用法
资产负债表 资源
获取与经济代理人相关的财务报表/年度会计报告中的公开信息
$balanceSheet = $client()->balanceSheet()->create([ 'cui' => '12345678', 'an' => 2019, ]); $balanceSheet->year; $balanceSheet->tax_identification_number; $balanceSheet->company_name; $balanceSheet->activity_code; $balanceSheet->activity_name; $balanceSheet->indicators; // array $balanceSheet->indicators['AVERAGE_NUMBER_OF_EMPLOYEES']->value; $balanceSheet->indicators['NET_LOSS']->value; $balanceSheet->indicators['NET_PROFIT']->value; $balanceSheet->indicators['GROSS_LOSS']->value; $balanceSheet->indicators['GROSS_PROFIT']->value; $balanceSheet->indicators['TOTAL_EXPENSES']->value; $balanceSheet->indicators['TOTAL_INCOME']->value; $balanceSheet->indicators['NET_TURNOVER']->value; $balanceSheet->indicators['HERITAGE_OF_THE_KINGDOM']->value; $balanceSheet->indicators['PAID_SUBSCRIBED_CAPITAL']->value; $balanceSheet->indicators['CAPITAL_TOTAL']->value; $balanceSheet->indicators['PROVISIONS']->value; $balanceSheet->indicators['ADVANCE_INCOME']->value; $balanceSheet->indicators['LIABILITIES']->value; $balanceSheet->indicators['PREPAYMENTS']->value; $balanceSheet->indicators['HOME_AND_BANK_ACCOUNTS']->value; $balanceSheet->indicators['DEBT']->value; $balanceSheet->indicators['INVENTORIES']->value; $balanceSheet->indicators['CURRENT_ASSETS']->value; $balanceSheet->indicators['FIXED_ASSETS']->value; $balanceSheet->toArray(); // ['year' => '', 'tax_identification_number' => '', 'company_name' => '' ...]
对于资产负债表,指标可能因 ANAF 指定公司类型而异。我建议您使用 var_dump 来观察指标类型。绝大多数公司的指标如上例所示
信息 资源
获取关于公司或多个公司的信息。
$companyInfo = $client->info()->create([ [ 'cui' => '12345678', 'data' => '2021-01-01', ], [ 'cui' => '222222', 'data' => '2021-01-01', ] ]); /* * If you send one array, for one company, you will receive a CreateResponse object with the structure below. * If you send multiple arrays, for multiple companies, you will receive a CreateResponses object with an array * with CreateResponse objects. */ $companyInfo->generalData; /* Accessible information in general data */ $companyInfo->generalData->companyName; $companyInfo->generalData->address; $companyInfo->generalData->registrationNumber; $companyInfo->generalData->phone; $companyInfo->generalData->fax; $companyInfo->generalData->postalCode; $companyInfo->generalData->document; $companyInfo->generalData->registrationStatus; $companyInfo->generalData->registrationDate; $companyInfo->generalData->activityCode; $companyInfo->generalData->bankAccount; $companyInfo->generalData->roInvoiceStatus; $companyInfo->generalData->authorityName; $companyInfo->generalData->formOfOwnership; $companyInfo->generalData->organizationalForm; $companyInfo->generalData->legalForm; $companyInfo->vatRegistration; /* Accessible information in vat registration */ $companyInfo->vatRegistration->status; //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; /* Accessible information in vat at checkout */ $companyInfo->vatAtCheckout->startDate; $companyInfo->vatAtCheckout->stopDate; $companyInfo->vatAtCheckout->updateDate; $companyInfo->vatAtCheckout->publishDate; $companyInfo->vatAtCheckout->updatedType; $companyInfo->vatAtCheckout->status; $companyInfo->inactiveState; /* Accessible information in inactive state */ $companyInfo->inactiveState->inactivationDate; $companyInfo->inactiveState->reactivationDate; $companyInfo->inactiveState->publishDate; $companyInfo->inactiveState->deletionDate; $companyInfo->inactiveState->status; $companyInfo->splitVat; /* Accessible information in split tva */ $companyInfo->splitVat->startDate; $companyInfo->splitVat->stopDate; $companyInfo->splitVat->status; $companyInfo->hqAddress; /* Accessible information in hq address */ $companyInfo->hqAddress->street; $companyInfo->hqAddress->no; $companyInfo->hqAddress->city; $companyInfo->hqAddress->cityCode; $companyInfo->hqAddress->county; $companyInfo->hqAddress->countyCode; $companyInfo->hqAddress->countyShort; $companyInfo->hqAddress->country; $companyInfo->hqAddress->details; $companyInfo->hqAddress->postalCode; $companyInfo->fiscalAddress; /* Accessible information in fiscal address */ $companyInfo->fiscalAddress->street; $companyInfo->fiscalAddress->no; $companyInfo->fiscalAddress->city; $companyInfo->fiscalAddress->cityCode; $companyInfo->fiscalAddress->county; $companyInfo->fiscalAddress->countyCode; $companyInfo->fiscalAddress->countyShort; $companyInfo->fiscalAddress->country; $companyInfo->fiscalAddress->details; $companyInfo->fiscalAddress->postalCode; // You can use all resources as array $companyInfo->toArray(); // ["general_data" => ["tax_identification_number" => '', "company_name" => ''...]..] // or $companyInfo->generalData->toArray(); // ['tax_identification_number' => '', 'company_name' => ''...]
Ngo 资源
检查注册在宗教实体/单位登记册中的 NGO 纳税人。(文档)
$entityInfo = $client->ngo()->create([ [ 'cui' => '12345678', 'data' => '2021-01-01', ] ]); $entityInfo->taxIdentificationNumber; $entityInfo->searchDate; $entityInfo->entityName; $entityInfo->address; $entityInfo->phone; $entityInfo->postalCode; $entityInfo->document; $entityInfo->registrationStatus; $entityInfo->startDate; $entityInfo->endDate; $entityInfo->status; // You can use all resources as array $entityInfo->toArray(); // ["tax_identification_number" => '', "entity_name" => ''...]
eFactura 资源
Upload 资源
将 XML (eFactura) 文件上传到 SPV。
待办事项:改进错误处理
$upload = $authorizedClient->efactura()->upload( xml_path: $pathToXmlFile, taxIdentificationNumber: '12345678', //standard: UploadStandard::UBL, // default value is UBL //extern: false, // default value is false //selfInvoice: false, // default value is false ); $upload->responseDate, // 202401011640 $upload->executionStatus, $upload->uploadIndex,
状态 资源
待办事项:实现 状态
(此处)
消息 资源
待办:从这里实现分页消息
功能,获取可用消息列表
$spvMessages = $authorizedClient->efactura()->messages([ 'zile' => 30, // between 1 and 60 'cif' => '12345678', ]); $spvMessages->messages; // array $spvMessages->serial; $spvMessages->taxIdentificationNumbers; $spvMessages->title; $message = $spvMessages->messages[0]; $message->creationDate, $message->taxIdentificationNumber, $message->solicitationId, $message->details, $message->type, $message->id,
下载 - eFactura XML资源
从消息端点接收到的id
标识的SPV获取文件
$file = $authorizedClient->efactura()->download([ 'id' => '12345678', ]); $file->getContent(); // string - You can save/download the content to a file
验证资源
待办:从这里实现验证
功能
XmlToPdf资源
将XML eFactura转换为PDF。对于此端点,您需要使用未经身份验证的客户端
/* * $xmlStandard can be one of the following: 'FACT1', 'FCN'. * The default value is 'FACT1' */ $file = $client->efactura()->xmlToPdf($pathToXmlFile, $xmlStandard); $file->getContent(); // string - You can save the pdf content to a file
ANAF PHP是一个开源软件,许可协议为MIT许可协议。