spoje.net / flexipeehp
Requires
- php: >=5.6
- ext-curl: *
- vitexsoftware/ease-framework: dev-master
Requires (Dev)
README
基于 PHP 的库,易于与捷克会计系统 FlexiBee 交互。
CZ: PHP 库,用于轻松处理与捷克经济系统 FlexiBee 的交互
❗ 此库将被标记为过时。请注意其轻量级继任者 https://github.com/Spoje-NET/php-flexibee ❗
感谢
本库的创建离不开 Spoje.Net 公司的慷慨支持,该公司承担了 LMS / FlexiBee 连接解决方案的开发和库存导入。👍
我还要感谢技术支持公司 ABRA Flexi s.r.o. 的耐心,他们在回答我时而愚蠢的问题和错误报告时表现出了极大的耐心。
GDPR 日志记录的解析得到了 <PureHTML> 的支持。
安装
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": "info@vitexsoftware.cz" } ], "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 和特定的订单。
它是如何工作的?
整个库的核心组件是 Třída FlexiBeeRO 类,它能够通过 PHP 扩展 curl 与 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(动作、关系)类中,该类包含一个静态定义的数组,包含从 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 FlexiPeeHPtest
调试模式
如果将 FlexiPeeHP 中的 $this->debug 设置为 true,则将在数据发送到 FlexiBee 之前进行额外的测试。检查以下可能的错误
- 是否存在定义的证据的插入字段?
- 插入字段是否仅为读取?
- 如果插入字段是链接,则该字段也是字段吗?
在调试模式下,所有对 flexibee 的请求及其响应都存储在 /tmp 文件夹中
库包含向 FlexiBee 开发者发送记录错误的机制
如果 FlexiBee 返回内部服务器错误 500,则会将包含错误信息的电子邮件发送给开发者。
如果使用运行在同一服务器上的 FlexiBee 并且可以读取错误日志,则会从中提取相关片段并将其添加到电子邮件正文中。
电子邮件还包含有关许可证和授权模块的附加信息。
作为附件,还包括包含服务器请求正文、响应正文和 curl 信息的文件。
在对象的生命周期中,错误会被记录,并且只会发送每种类型的第一个错误。
测试
PHPUnit 测试位于 testing 文件夹中。如果您想测试的不是官方的 http://demo.flexibee.eu/ 服务器,则需要更改 bootstrap.php 文件中的设置。
$testServer 变量的内容决定了将使用哪些预定义设置。当然,您也可以定义自己的。以下是一个示例,展示了连接到 spoje.net 测试服务器的测试服务器。
请首先创建测试公司 TESTING s.r.o. 并设置具有使用 REST API 权限的用户凭据。(这是在安装 FlexiBee 时输入的管理员用户。)
注意:如果测试的是拥有大量发票和连接银行的公司,测试可能需要一些时间,因为还会测试自动对账单的调用。
如果您的项目决定继承 FlexiPeeHP 并为这些类编写测试,也可以继承 FlexiPeeHP 的测试,例如
class HookRecieverTest extends \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 文件夹中
文件 | 描述 |
---|---|
AttachmentSaveToFile.php | 将附件保存到文件 |
AttachmentUpload.php | 上传附件 |
AuthSessionIdUsage.php | AuthSessionId 的示例 |
AuthentizeContact.php | 接触认证 |
BatchOperation.php | 在批量操作中使用过滤器 |
CreateLabel.php | 与标签一起工作 |
DryRun.php | 测试保存(dry-run) |
DownloadInvoicePDF.php | 下载 PDF 发票 |
错误404.php | 处理不存在记录 |
FindOverdueInvoices.php | 查找逾期发票 |
GetRecordWithRelation.php | 获取包括凭证数据的记录 |
GetBankAccountForCompany.php | 从目录中获取公司银行账户 |
InvoiceLockUnlock.php | 锁定和解锁记录 |
InvoiceCopy.php | 从存档创建税务单据 |
LoginLogout | 用户登录和注销 |
NajdiDanovyDokladKzalohovemu.php | 查找凭证 |
Naskladnění.php | 带有序列号的库存产品 |
NewInvoice.php | 作为json列出的具有到期日的新的发票 |
ObjectChaining.php | 在单个调用中执行多个操作的链式对象 |
ObjectCooperation.php | 在对象之间共享数据和连接参数 |
PerformingActions.php | 如何对单据执行操作。例如,取消 |
ReadAddressColumns.php | 返回特定列 |
sendInvoiceByMail.php | 通过电子邮件发送发票 |
SendReminders.php | 发送提醒 |
SetContactAuth.php | 设置认证 |
TestConnection.php | 检查连接 |
使用示例
- Flexplorer 开发工具和记录编辑器
- FlexiProXY FlexiBee的Web界面修改器
- 提醒器 提醒发送器
- Matcher 发票配对器
- Redmine2FlexiBee 从Redmine的已工作时间生成发票
- FlexiPeeHP-Bricks FlexiBee工作时的示例和常用类
- TestingTools 测试FlexiBee应用程序的工具
参考
- 从FAPI导入数据到FlexiBee - blahasoft.cz
- 从iDoklad导入数据到FlexiBee - blahasoft.cz
Docker
docker pull vitexsoftware/flexipeehp
Debian/Ubuntu
对于Linux,有可用的 .deb 软件包。请使用repo
wget -O - http://v.s.cz/info@vitexsoftware.cz.gpg.key|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
FlexiBee库支持其他语言
- Flexipy (Python) 文档
- Flexibee.rb (Ruby)
- UniMapper Flexibee 扩展 (PHP)
- Flexibee 客户端 (PHP)
- Flexibee (Java)