spoje.net/flexibee

此软件包已被废弃,不再维护。作者建议使用 spojenet/flexibee 软件包。

用于轻松与捷克会计系统 FlexiBee 交互的库。

1.39 2020-09-09 21:55 UTC

This package is auto-updated.

Last update: 2020-11-13 02:49:54 UTC


README

FlexiBeeHP Logo

基于 PHP7.1+ 的库,用于轻松与捷克会计系统 FlexiBee 交互。

CZ: PHP 库,用于轻松操作捷克经济系统 FlexiBee

Source Code Latest Version Software License time tracker Build Status Code Coverage Docker pulls Total Downloads Latest stable

SensioLabsInsight

Latest Stable Version Total Downloads Latest Unstable Version License Monthly Downloads Daily Downloads

❗ 由于 composer 2.0+ 的要求,此库已重命名为 spojenet/flexibee

感谢

本库的创建离不开 Spoje.Net 公司的慷慨支持,该公司承担了连接 LMS / FlexiBee 解决方案和库存导入的开发费用。👍

Spoje.Net

我还要感谢 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 命令进行安装

Compser 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'] ])

因此,可以通过传递值 companyUrlauthSessionId 的用户按钮来连接 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.jsonhttps://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 检查连接

使用示例

参考

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

Debian Test

构建

通过运行 make deb 创建Debian软件包

Docker镜像

docker build -t vitexsoftware/flexipeehp

FlexiBee库支持其他语言

WakaTime 项目工作统计