Logotipo FlexiPeeHP" title="Logotipo do projeto" style="largura máxima: 100%;">
Biblioteca baseada em PHP para fácil interação com o sistema de contabilidade tcheco FlexiBee.
CZ: Biblioteca PHP para facilitar o trabalho com o sistema econômico tcheco FlexiBee
❗ Esta biblioteca será marcada como obsoleta. Preste atenção ao seu sucessor leve https://github.com/Spoje-NET/php-flexibee ❗
A criação desta biblioteca não teria sido possível sem o simpático apoio da Spoje.Net, que custeou o desenvolvimento da solução de ligação LMS / FlexiBee e importação do armazém. ?
Gostaria também de agradecer ao suporte técnico da ABRA Flexi s.r.o pela sua santa paciência em responder às minhas perguntas e relatórios de bugs nem sempre inteligentes.
A análise dos resultados para fins de registro do GDPR foi refinada com o gentil suporte de <PureHTML>
composer require spoje.net/ FlexiPeeHP
se o seu compositor.json resultante for parecido com isto:
{
"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 "
}
o comando de instalação do compositor inicia a instalação:
A configuração é feita definindo as seguintes constantes:
/*
* 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é
ou credenciais podem ser fornecidas ao instanciar a classe.
$ invoicer = new FlexiPeeHP FakturaVydana ( null ,[
' company ' => ' Firma_s_r_o_ ' ,
' url ' => ' https://flexibee.firma.cz/ ' ,
' user ' => ' rest ' ,
' password ' => ' -dj3x21xaA_ '
]);
Este método de configuração tem uma prioridade mais alta do que as constantes definidas acima.
$ order = new FlexiPeeHP ObjednavkaPrijata( ' code:OBP0034/2019 ' ,[ ' companyUrl ' => $ _GET [ ' companyUrl ' ], ' authSessionId ' => $ _GET [ ' authSessionId ' ] ])
Desta forma, uma aplicação chamada por um botão de usuário passando os valores companyUrl e authSessionId pode se conectar ao flexibee e ao pedido concreto
O componente central de toda a biblioteca é a classe FlexiBeeRO, que é capaz de se comunicar com a API REST FlexiBee usando a extensão curl PHP.
Dele são derivadas classes para registros individuais, contendo métodos para operações frequentemente utilizadas, por exemplo "Pagar" no caso de faturas recebidas.
Uma nova classe derivada é criada de forma que o nome da classe seja o nome do registro, mas sem hífens. Estas são substituídas por uma letra maiúscula no nome.
function evidenceToClass ( $ evidence )
{
return str_replace ( ' ' , '' , ucwords ( str_replace ( ' - ' , ' ' , $ evidence )));
}
Aquilo é Se quisermos derivar uma nova classe para o registro "Unidades de medida", ela ficará assim:
<?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 ' ;
}
E então é fácil escrever as unidades de medida em 2 linhas:
$ jednotky = new MernaJednotka ();
print_r ( $ jednotky -> getAllFromFlexiBee () );
Se quisermos que a classe recém-criada seja capaz de escrever no flexibee, ela deverá ser derivada do ancestral FlexiBeeRW.
Mais exemplos de uso podem ser encontrados em um projeto separado
Em alguns casos, é bom saber quais ações podemos tomar ou qual é a estrutura dos registros. Essas informações podem ser obtidas ligando para https://demo.flexibee.eu/c/demo/*/properties.json ou https://demo.flexibee.eu/c/demo/*/actions.json, mas isso é operação relativamente demorada. Como a estrutura dos registros e das Ações ou relacionamentos entre os registros do FlexiBee não mudam com frequência, FlexiPeeHP possui um mecanismo que permite trabalhar com esses dados sem a necessidade de consultar o servidor.
A estrutura é armazenada na classe Structure (Actions,Relations) que contém um campo definido estaticamente contendo informações que de outra forma teriam que ser obtidas do FlexiBee.
O item da lista de evidências https://demo.flexibee.eu/c/demo/evidence-list pode então ser facilmente mostrado a qualquer momento:
echo FlexiPeeHP Structure:: $ evidence [ ' faktura-vydana ' ];
As estruturas dos registros individuais são então armazenadas em variáveis estáticas. Seu nome segue as mesmas regras para criar um novo nome de classe, exceto que a primeira letra é minúscula. Aquilo é:
lcfirst ( FlexiPeeHP FlexiBeeRO:: evidenceToClassName ( $ evidence ))
Se necessário, essas classes poderão ser geradas com o conteúdo atual pelo seguinte comando:
cd tools/
./update_all.sh
A operação leva alguns minutos. Podemos exibir o progresso da seguinte forma:
tail -f /var/log/syslog | grep FlexiPeeHP test
Se você definir $this->debug como true em objetos FlexiPeeHP , testes adicionais serão realizados antes de enviar dados para FlexiBee. Os seguintes possíveis erros são verificados:
No modo de depuração, todas as solicitações flexibee e suas respostas também são salvas na pasta /tmp
A biblioteca inclui um mecanismo para enviar erros de tempo de execução do FlexiBee aos desenvolvedores:
Se o FlexiBee retornar um erro interno do servidor 500, um e-mail contendo a mensagem de erro será enviado aos desenvolvedores.
Se for usado o FlexiBee rodando no mesmo servidor e for possível ler os logs de erros, um fragmento apropriado é extraído deles e adicionado ao corpo do e-mail.
O e-mail também contém informações adicionais sobre a licença e os módulos habilitados.
Também anexados estão arquivos contendo o corpo da solicitação ao servidor, o corpo de sua resposta e um arquivo contendo informações sobre curl.
Durante a vida útil do objeto, os erros são registrados e apenas o primeiro de cada tipo é enviado.
Os testes do PHPUnit estão localizados na pasta de testes . Se quiser testar em um servidor diferente do oficial http://demo.flexibee.eu/ , você precisa alterar as configurações no arquivo bootstrap.php .
O conteúdo da variável $testServer determina qual das configurações padrão será usada. E é claro que você pode definir o seu próprio. Como exemplo, o servidor de teste spoje.net é mostrado aqui.
Para testes, primeiro crie uma empresa de testes TESTING s.r.o. e defina os dados de acesso de um usuário autorizado a usar a API REST. (Qual é o usuário administrador especificado quando o FlexiBee foi instalado.)
Atenção: o teste em uma empresa com muitas faturas e um banco conectado pode levar algum tempo, pois a chamada automática de correspondência de documentos também é testada.
Se você decidir herdar FlexiPeeHP em seu projeto e escrever testes para essas classes também herdadas de FlexiPeeHP , por exemplo:
classe HookRecieverTest estende Test FlexiPeeHP ChangesTest
Adicione também os caminhos dos testes originais ao seu compositor.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 /",
}
}
Na pasta Exemplos estão os seguintes exemplos de uso:
Arquivo | Descrição |
---|---|
AnexoSaveToFile.php | salve o anexo em um arquivo |
AnexoUpload.php | carregar anexo |
AuthSessionIdUsage.php | Exemplo de autenticação AuthSessionId |
AutenticarContato.php | autenticação de contato |
BatchOperation.php | Usando um filtro em operações em lote |
CriarLabel.php | trabalhar com rótulos |
DryRun.php | Armazenamento de teste (ensaio) |
Baixar faturaPDF.php | Baixar fatura em PDF |
Erro404.php | trabalhar com registros inexistentes |
FindOverdueInvoices.php | encontrar faturas vencidas |
GetRecordWithRelation.php | Obtenção de um registro incluindo dados de subdébito |
GetBankAccountForCompany.php | Obtenção de uma conta bancária para uma empresa no diretório |
FaturaLockUnlock.php | Bloqueando e desbloqueando o registro |
FaturaCopy.php | criação de documento fiscal a partir do adiantamento |
LoginSair | login e logout do usuário |
NajdiDanovyDokladKzalohovemu.php | rastreamento de documentos |
Armazenamento.php | Produto em estoque com números de série |
Nova fatura.php | Nova fatura com data de vencimento escrita como json |
ObjectChaining.php | Encadeamento de objetos para múltiplas operações apenas em uma fila |
ObjectCooperação.php | Compartilhando dados e parâmetros de conexão entre objetos |
PerformingActions.php | Como executar ações em um documento de ação. por exemplo cancelamento |
ReadAddressColumns.php | retornar colunas específicas |
sendInvoiceByMail.php | envio da fatura por e-mail |
EnviarReminders.php | enviando lembretes |
SetContactAuth.php | configurações de autenticação |
TestConnection.php | verificação de conexão |
docker pull vitexsoftware/ FlexiPeeHP
Existem pacotes .deb disponíveis para Linux. Por favor, use o repositório:
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
Nesse caso, você precisa adicionar o seguinte ao arquivo compositor.json do seu aplicativo:
"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
}
}
]
Então, quando você instalar as dependências, ficará mais ou menos assim:
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
E será possível atualizar globalmente todo o sistema via apt-get.
Também geramos o pacote FlexiPeeHP -doc , contendo documentação do desenvolvedor gerada usando o programa ApiGen. A documentação está disponível online em http://flexibee-dev.spoje.net/FlexiPeeHP/
Teste:
cd /usr/share/doc/ FlexiPeeHP /
composer install
php -f flexibeeping.php
Criamos o pacote Debian executando make deb
Imagem do Docker:
docker build -t vitexsoftware/ FlexiPeeHP
Estatísticas de trabalho no projeto WakaTime