FlexiPeeHP 徽标" title="项目徽标" style="max-width: 100%;">
基于 PHP 的库,可轻松与捷克会计系统 FlexiBee 交互。
CZ:PHP 库,可轻松与捷克经济系统 FlexiBee 配合使用
❗ 该库将被标记为已过时。请关注它的轻量级后继者 https://github.com/Spoje-NET/php-flexibee ❗
如果没有 Spoje.Net 的大力支持,这个库的创建是不可能的,Spoje.Net 出资开发了连接 LMS / FlexiBee 和导入仓库的解决方案。 ?
我还要感谢 ABRA Flexi s.r.o. 的技术支持,感谢他们耐心地回答我并不总是聪明的问题和错误报告。
在 <PureHTML> 的支持下,针对 GDPR 日志目的的结果解析已得到改进
composer require spoje.net/ FlexiPeeHP
如果你生成的composer.json看起来像这样:
{
"name" : " vendor/projectname " ,
"description" : " Test " ,
"type" : " project " ,
"require" : {
"spoje.net/ FlexiPeeHP " : " * "
},
"license" : " MIT " ,
"authors" : [
{
"name" : " Vítězslav Dvořák " ,
"email" : " [email protected] "
}
],
"minimum-stability" : " stable "
}
Composer install命令开始安装:
配置是通过设置以下常量来完成的:
/*
* URL Flexibee API
*/
define ( ' FLEXIBEE_URL ' , ' https://flexibee-dev.spoje.net:5434 ' );
/*
* Uživatel FlexiBee API
*/
define ( ' FLEXIBEE_LOGIN ' , ' apiuser ' );
/*
* Heslo FlexiBee API
*/
define ( ' FLEXIBEE_PASSWORD ' , ' apipass ' );
/*
* Společnost v FlexiBee
*/
define ( ' FLEXIBEE_COMPANY ' , ' test_s_r_o_ ' );
/*
* Nebo pokud nechceme používat jméno a heslo
*/
define ( ' FLEXIBEE_AUTHSESSID ' , ' 6QuifebMits ' ); //Volitelné
/*
* Pomalý server, velká databáze a přes modem k tomu
*/
define ( ' FLEXIBEE_TIMEOUT ' , 60 ); //Volitelné
或者在实例化该类时可以提供凭据。
$ invoicer = new FlexiPeeHP FakturaVydana ( null ,[
' company ' => ' Firma_s_r_o_ ' ,
' url ' => ' https://flexibee.firma.cz/ ' ,
' user ' => ' rest ' ,
' password ' => ' -dj3x21xaA_ '
]);
这种设置方法比上面定义的常量具有更高的优先级。
$ order = new FlexiPeeHP ObjednavkaPrijata( ' code:OBP0034/2019 ' ,[ ' companyUrl ' => $ _GET [ ' companyUrl ' ], ' authSessionId ' => $ _GET [ ' authSessionId ' ] ])
这样,由用户按钮传递companyUrl和authSessionId值调用的应用程序就可以连接到flexibee和具体订单
整个库的核心组件是 FlexiBeeRO 类,它能够使用curl PHP 扩展与FlexiBee REST API 进行通信。
然后从中派生出各个记录的类,其中包含常用操作的方法,例如收到发票时的“付款”。
创建新的派生类时,类的名称是记录的名称,但不带连字符。它们被名称中的大写字母取代。
function evidenceToClass ( $ evidence )
{
return str_replace ( ' ' , '' , ucwords ( str_replace ( ' - ' , ' ' , $ evidence )));
}
那是如果我们想为“测量单位”记录派生一个新类,它将如下所示:
<?php
/**
* @link https://demo.flexibee.eu/c/demo/merna-jednotka/properties Vlastnosti evidence
*/
class MernaJednotka extends / FlexiPeeHP /FlexiBee
{
/**
* Evidence užitá objektem.
*
* @var string
*/
public $ evidence = ' merna-jednotka ' ;
}
然后很容易将测量单位写在两行上:
$ jednotky = new MernaJednotka ();
print_r ( $ jednotky -> getAllFromFlexiBee () );
如果我们希望新创建的类能够写入flexibee,它必须从祖先FlexiBeeRW派生。
更多使用示例可以在单独的项目中找到
在某些情况下,了解我们可以采取哪些操作或记录的结构是什么是很有好处的。该信息可以通过调用 https://demo.flexibee.eu/c/demo/*/properties.json 或 https://demo.flexibee.eu/c/demo/*/actions.json 来获取,但这是操作比较耗时。由于记录和操作的结构或 FlexiBee 记录之间的关系不会经常更改,因此FlexiPeeHP具有一种机制,允许在无需查询服务器的情况下处理这些数据。
该结构存储在 Structure 类(Actions、Relations)中,该类包含一个静态定义的字段,其中包含必须从 FlexiBee 获取的信息。
证据列表 https://demo.flexibee.eu/c/demo/evidence-list 中的项目可以随时轻松显示:
echo FlexiPeeHP Structure:: $ evidence [ ' faktura-vydana ' ];
然后,各个记录的结构存储在静态变量中。它们的名称遵循与创建新类名称相同的规则,只是第一个字母是小写的。那是:
lcfirst ( FlexiPeeHP FlexiBeeRO:: evidenceToClassName ( $ evidence ))
如果需要,可以通过以下命令使用当前内容生成这些类:
cd tools/
./update_all.sh
手术需要几分钟。我们可以如下显示进度:
tail -f /var/log/syslog | grep FlexiPeeHP test
如果您在FlexiPeeHP对象中将 $this->debug 设置为 true,则在将数据发送到 FlexiBee 之前将执行额外的测试。检查以下可能的错误:
在调试模式下,所有 Flexibee 请求及其响应也会保存到 /tmp 文件夹中
该库包含一种向开发人员发送 FlexiBee 运行时错误的机制:
如果 FlexiBee 返回内部服务器错误 500,则会向开发人员发送包含错误消息的电子邮件。
如果使用在同一服务器上运行的 FlexiBee 并且可以读取错误日志,则会从中提取适当的片段并将其添加到邮件正文中。
该电子邮件还包含有关许可证和启用的模块的其他信息。
还作为附件附加的文件包含对服务器的请求正文、其响应正文以及包含有关curl 信息的文件。
在对象的生命周期内,会记录错误,并且仅发送每种类型的第一个错误。
PHPUnit 测试位于测试文件夹中。如果您想针对官方 http://demo.flexibee.eu/ 以外的服务器进行测试,您需要更改bootstrap.php文件中的设置。
$testServer 变量的内容决定将使用哪个默认设置。当然,您可以定义自己的。作为示例,此处显示了 spoje.net 测试服务器。
为了进行测试,请首先创建一个测试公司TESTING s.r.o,并设置有权使用REST API的用户的访问数据。 (这是安装FlexiBee时指定的管理员用户。)
警告:针对拥有大量发票的公司和连接的银行进行测试可能需要一些时间,因为自动文档匹配调用也经过测试。
如果您决定在项目中继承FlexiPeeHP并为这些也继承自FlexiPeeHP的类编写测试,例如:
类 HookRecieverTest 扩展 Test FlexiPeeHP ChangesTest
还将原始测试的路径添加到您的composer.json中:
"autoload-dev": {
"psr-4": {
"Test\": "vendor/spoje.net/ FlexiPeeHP /testing/src/ FlexiPeeHP /testing/",
"Test\Ease\": "vendor/vitexsoftware/ease-framework/tests/src/Ease",
"Test\ FlexiPeeHP \": "vendor/spoje.net/ FlexiPeeHP /testing/src/ FlexiPeeHP /",
}
}
Examples 文件夹中有以下使用示例:
文件 | 描述 |
---|---|
附件保存到文件.php | 将附件保存到文件 |
附件上传.php | 上传附件 |
AuthSessionIdUsage.php | AuthSessionId 身份验证示例 |
AuthenticateContact.php | 联系认证 |
批量操作.php | 在批量操作中使用过滤器 |
创建标签.php | 使用标签 |
干运行.php | 测试存储(空运行) |
下载发票PDF.php | PDF发票下载 |
错误404.php | 处理不存在的记录 |
FindOverdueInvoices.php | 查找逾期发票 |
获取记录与关系.php | 获取包含子借记数据的记录 |
获取公司银行账户.php | 从目录中获取公司的银行账户 |
发票锁解锁.php | 锁定和解锁记录 |
发票副本.php | 根据预付款创建税务文件 |
登录退出 | 用户登录和注销 |
NajdiDanovyDokladKzalohovemu.php | 文件追踪 |
存储.php | 带有序列号的库存产品 |
新发票.php | 新发票的到期日写为 json |
对象链.php | 仅在队列中链接多个操作的对象 |
对象合作.php | 在对象之间共享数据和连接参数 |
执行操作.php | 如何对操作文档执行操作。例如消除 |
读取地址列.php | 返回特定列 |
通过邮件发送发票.php | 通过电子邮件发送发票 |
发送提醒.php | 发送提醒 |
设置联系人验证.php | 身份验证设置 |
测试连接.php | 连接检查 |
docker pull vitexsoftware/ FlexiPeeHP
有适用于 Linux 的 .deb 软件包。请使用存储库:
wget -O - http://v.s.cz/[email protected]|sudo apt-key add -
echo deb http://v.s.cz/ stable main > /etc/apt/sources.list.d/ease.list
aptitude update
aptitude install FlexiPeeHP
在这种情况下,您需要将以下内容添加到应用程序的composer.json文件中:
"require" : {
"spojenet_ FlexiPeeHP " : " * " ,
"vitexsoftware_ease-framework" : " * "
},
"repositories" : [
{
"type" : " path " ,
"url" : " /usr/share/php/ FlexiPeeHP " ,
"options" : {
"symlink" : true
}
},
{
"type" : " path " ,
"url" : " /usr/share/php/Ease " ,
"options" : {
"symlink" : true
}
}
]
因此,当您安装依赖项时,它将如下所示:
Loading composer repositories with package information
Installing dependencies from lock file
- Installing vitexsoftware_ease-framework (1.1.3.3)
Symlinked from /usr/share/php/Ease
- Installing spojenet_ FlexiPeeHP (0.2.1)
Symlinked from /usr/share/php/ FlexiPeeHP
并且可以通过 apt-get 对整个系统进行全局更新。
我们还生成FlexiPeeHP -doc包,其中包含使用 ApiGen 程序生成的开发人员文档。该文档可在线获取:http://flexibee-dev.spoje.net/FlexiPeeHP/
测试:
cd /usr/share/doc/ FlexiPeeHP /
composer install
php -f flexibeeping.php
我们通过运行make deb创建 Debian 软件包
Docker 镜像:
docker build -t vitexsoftware/ FlexiPeeHP
WakaTime 项目的工作统计