spoje.net / flexibee
Requires
- ext-curl: *
- vitexsoftware/ease-core: ^1
Requires (Dev)
- phing/phing: ^2
- phpunit/phpunit: ^8
Replaces
This package is auto-updated.
Last update: 2020-11-13 02:49:54 UTC
README
基于 PHP7.1+ 的库,用于轻松与捷克会计系统 FlexiBee 交互。
CZ: PHP 库,用于轻松操作捷克经济系统 FlexiBee
❗ 由于 composer 2.0+ 的要求,此库已重命名为 spojenet/flexibee ❗
感谢
本库的创建离不开 Spoje.Net 公司的慷慨支持,该公司承担了连接 LMS / FlexiBee 解决方案和库存导入的开发费用。👍
我还要感谢 ABRA Flexi s.r.o. 公司的技术支持,他们在回答我有时不够敏捷的问题和错误报告时表现出了极大的耐心。
在 GDPR 日志记录的目的下,结果解析得到了 <PureHTML> 的友好支持。
安装
composer require spojenet/flexibee
如果您的 composer.json 文件大致如下
{
"name": "vendor/projectname",
"description": "Test",
"type": "project",
"require": {
"spojenet/flexibee": "*"
},
"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é /* * Pomalý server, velká databáze a přes modem k tomu */ define('FLEXIBEE_EXCEPTIONS', true); //Vracet PHP vyjímku v případě že FlexiBee vrátí chybu
如果没有设置常量,则使用与同名字符环境变量相同的配置类。例如:getenv('FLEXIBEE_URL')
还可以在创建类实例时输入登录凭据。
$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))); }
也就是说,如果我们想为“Měrné jednotky”(计量单位)凭证创建一个新类,它将如下所示
<?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 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 并为这些类编写测试,例如
class HookRecieverTest extends \Test\FlexiPeeHP\ChangesTest
请将 composer.json 中的路径添加到原始测试中
"autoload-dev": {
"psr-4": {
"Test\\": "vendor/spoje.net/php-flexibee/testing/src/FlexiPeeHP/testing/",
"Test\\Ease\\": "vendor/vitexsoftware/ease-framework/tests/src/Ease",
"Test\\FlexiPeeHP\\": "vendor/spoje.net/php-flexibee/testing/src/FlexiPeeHP/",
}
}
示例
在 Examples 文件夹中可以找到这些示例
| 文件 | 描述 |
|---|---|
| AttachmentSaveToFile.php | 将附件保存到文件中 |
| AttachmentUpload.php | 上传附件 |
| AuthSessionIdUsage.php | AuthSessionId 认证示例 |
| AuthentizeContact.php | 联系认证 |
| BatchOperation.php | 批量操作时使用过滤器 |
| CreateLabel.php | 标签处理 |
| DryRun.php | 测试存储(dry-run) |
| DownloadInvoicePDF.php | 下载PDF发票 |
| Error404.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软件包。请使用仓库
sudo apt install lsb-release wget echo "deb http://repo.vitexsoftware.cz $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/vitexsoftware.list sudo wget -O /etc/apt/trusted.gpg.d/vitexsoftware.gpg http://repo.vitexsoftware.cz/keyring.gpg sudo apt update sudo apt install php-spojenet-flexibee
在这种情况下,需要将以下内容添加到您的应用程序的composer.json文件中
"require": { "deb/ease-core": "*", "deb/flexibee": "*" }, "repositories": [ { "type": "path", "url": "/usr/share/php/flexibee", "options": { "symlink": true } }, { "type": "path", "url": "/usr/share/php/EaseCore", "options": { "symlink": true } } ]
因此,在安装依赖项时,它将看起来像这样
Loading composer repositories with package information
Installing dependencies from lock file
- Installing ease-framework (1.1.3.3)
Symlinked from /usr/share/php/Ease
- Installing flexipeehp (0.2.1)
Symlinked from /usr/share/php/FlexiPeeHP
可以通过apt-get全局更新整个系统
我们还生成了一个名为 php-spojenet-flexibee-doc 的软件包,其中包含由ApiGen程序生成的开发文档。文档可在以下地址在线查看 http://vitexsoftware.cz/php-flexibee/namespaces/flexipeehp.html
测试
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-client (PHP)
- flexibee-client (PHP)
- Flexibee (Java)



