定制 arteq/jpk-fa 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

arteq/jpk-fa

Composer 安装命令:

composer require arteq/jpk-fa

包简介

README 文档

README

Biblioteka umożliwia generowanie raportów JPK_FA dla urzędów skarbowych. Wygenerowany raport może być opcjonalnie sprawdzony walidatorem, który przetestuje czy:

  • struktura pliku jest zgodna ze schematem XSD
  • wiersze kontrolne zgadzają się z wprowadzonymi danymi (liczby faktur, wierszy faktur, kwoty)
  • daty wystawienia faktur odpowiadają zakresowi dat raportu
  • każda faktura ma wiersz danych oraz każdy wiersz danych należy do jakiejś faktury
  • numery faktur są unikalne
  • dla faktur korzystających ze zwolnienia VAT podano podstawę prawną tego zwolnienia

Instalacja

    $ composer require arteq/jpk-fa

Opcjonalnie można przeprowadzić testy:

    $ vendor/bin/phpunit

Tworzenie raportu

Kompletny przykład kodu znajduje się w katalogu example:

<?php

use ArteQ\JPK_FA\Types;
use ArteQ\JPK_FA\Report;
use ArteQ\JPK_FA\Company;
use ArteQ\JPK_FA\Invoice;
use ArteQ\JPK_FA\InvoiceRow;
use ArteQ\JPK_FA\Validator;

require __DIR__.'/../vendor/autoload.php';

// pobranie listy urzędów
$offices = Types::getOfficeCodes();
print_r($offices);

// pobranie listy krajów
$countries = Types::getCountryCodes();
print_r($countries);

try
{
	// tworzenie nowego raportu dla faktur wystawionych od 2019-01-01 do 2019-02-02
	// dla Urzędu Skarbowego o symbolu 0202
	$report = new Report('2019-01-01', '2019-02-02', '0202');

	// dane firmy przygotowującej raport
	$company = new Company('ACME Ltd', '666-555-44-33');
	$company->set('REGON', '123123123');
	$company->set('Wojewodztwo', 'Mazowieckie');
	$company->set('Powiat', 'Warszawa');
	$company->set('Gmina', 'Warszawa');
	$company->set('Ulica', 'Wiejska');
	$company->set('NrDomu', '12');
	$company->set('NrLokalu', '34');
	$company->set('Miejscowosc', 'Warszawa');
	$company->set('KodPocztowy', '01-007');
	$company->set('Poczta', 'Warszawa');

	$report->setCompany($company);

	// dane klienta
	$client = new Company('ACME Ltd', '111 22 33 444', 'Pełen adres');

	// dane pierwszej faktury z jedną pozycją
	$invoice1 = new Invoice($client, '2019/01/01', '2019-01-02', '2019-01-01');
	$invoice1->addRow(new InvoiceRow('pozycja 1', 100, 23 ));
	$report->addInvoice($invoice1);

	// dane drugiej faktury z wieloma pozycjami
	$invoice2 = new Invoice($client, '2019/01/02', '2019-01-04', '2019-01-04');
	$invoice2->addRow(new InvoiceRow('pozycja 11', 111.11, 23, 1));
	$invoice2->addRow(new InvoiceRow('pozycja 22', 222.22, 8, 2));
	$invoice2->addRow(new InvoiceRow('pozycja 33', 333.33, 5, 3));
	$invoice2->addRow(new InvoiceRow('pozycja 44', 444.44, 0, 4));
	$invoice2->addRow(new InvoiceRow('pozycja 55', 555.55, 'zw', 5));
	$invoice2->setExcemptLegalBasis('podstawa prawna', 'P_19A');
	$report->addInvoice($invoice2);

	// generowanie i wyświetlenie raportu
	$reportXml = $report->generate();
	echo $reportXml;

	// sprawdzenie poprawności
	$validator = new Validator($reportXml);
	if ($validator->isValid())
	{
		echo "\nRAPORT POPRAWNY\n";
	}
	else
	{
		echo "\nRAPORT NIEPOPRAWNY\n";
		$errors = $validator->getErrors();
		print_r($errors);
	}
}
catch (\Exception $e)
{
	echo "Błąd: ".$e->getMessage();
}

Walidacja

Poprawność raportu można sprawdzić przy pomocy klasy Validator, która w konstruktorze przyjmuje string z treścią pliku XML. Do sprawdzenia poprawności służą dwie metody: isValid() oraz getErrors().

$reportXml = file_get_contents('raport.xml');
$validator = new Validator($reportXml);

if ($validator->isValid())
	echo "raport OK";
else
	echo "raport BŁĘDNY";
			
$errors = $validator->getErrors();
var_dump($errors);

Credits

Biblioteka jest wzorowana na: https://github.com/redgda/jpk

arteq/jpk-fa 适用场景与选型建议

arteq/jpk-fa 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 6.26k 次下载、GitHub Stars 达 0, 最近一次更新时间为 2019 年 03 月 06 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「vat」 「jpk-fa」 「faktury」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 arteq/jpk-fa 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 arteq/jpk-fa 我们能提供哪些服务?
定制开发 / 二次开发

基于 arteq/jpk-fa 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 6.26k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 21
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2019-03-06