Логотип FlexiPeeHP" title="Логотип проекта" style="max-width: 100%;">
PHP-библиотека для удобного взаимодействия с чешской системой учета FlexiBee.
Чехия: 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
если ваш полученный композитор.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 "
}
команда установки композитора запускает установку:
Конфигурация выполняется путем установки следующих констант:
/*
* 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, который может взаимодействовать с API REST FlexiBee с помощью расширения PHP Curl.
Затем на основе него формируются классы для отдельных записей, содержащие методы для часто используемых операций, например «Оплата» в случае полученных счетов.
Новый производный класс создается таким образом, что именем класса является имя записи, но без дефисов. Они заменяются заглавной буквой в названии.
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 ' ;
}
И тогда легко записать единицы измерения в 2 строки:
$ 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
Если вы установите для $this->debug значение true в объектах FlexiPeeHP , перед отправкой данных в 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
Также добавьте пути к исходным тестам в ваш композитор.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 /",
}
}
В папке «Примеры» находятся следующие примеры использования:
Файл | Описание |
---|---|
ВложениеSaveToFile.php | сохранить вложение в файл |
ВложениеUpload.php | загрузить вложение |
AuthSessionIdUsage.php | Пример аутентификации AuthSessionId |
АутентификатеКонтакт.php | аутентификация контакта |
Пакетная операция.php | Использование фильтра в пакетных операциях |
СоздатьLabel.php | работа с этикетками |
DryRun.php | Тестовое хранение (пробный прогон) |
СкачатьInvoicePDF.php | Скачать счет в формате PDF |
Ошибка404.php | работа с несуществующими записями |
FindOverdueInvoices.php | найти просроченные счета |
GetRecordWithRelation.php | Получение записи, включающей данные из субдебета |
GetBankAccountForCompany.php | Получение банковского счета для компании из справочника |
InvoiceLockUnlock.php | Блокировка и разблокировка записи |
InvoiceCopy.php | создание налогового документа из авансового платежа |
ВойтиВыйти | вход и выход пользователя |
НайдиДановыДокладKzalohovemu.php | отслеживание документов |
Хранение.php | Товар со склада с серийными номерами |
НовыйInvoice.php | Новый счет со сроком оплаты, записанным в формате JSON. |
Цепочка объектов.php | Объединение объектов в цепочку только для нескольких операций в очереди |
ObjectCooperation.php | Обмен данными и параметрами соединения между объектами |
ВыполнениеActions.php | Как выполнить действия над документом действия. например отмена |
ЧитатьAddressColumns.php | вернуть определенные столбцы |
sendInvoiceByMail.php | отправка счета по электронной почте |
SendReminders.php | отправка напоминаний |
SetContactAuth.php | настройки аутентификации |
TestConnection.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
В этом случае вам необходимо добавить в файл композитора.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
Мы создаем пакет Debian, запустив make deb.
Докер-образ:
docker build -t vitexsoftware/ FlexiPeeHP
Статистика работы проекта WakaTime