Logotipo de FlexiPeeHP" título="Logotipo del proyecto" estilo="ancho máximo: 100%;">
Biblioteca basada en PHP para una fácil interacción con el sistema de contabilidad checo FlexiBee.
CZ: Biblioteca PHP para trabajar fácilmente con el sistema económico checo FlexiBee
❗ Esta biblioteca se marcará como obsoleta. Preste atención a su sucesor liviano https://github.com/Spoje-NET/php-flexibee ❗
La creación de esta biblioteca no hubiera sido posible sin el amable apoyo de Spoje.Net, que pagó por el desarrollo de la solución para conectar LMS/FlexiBee e importar el almacén. ?
También me gustaría agradecer al soporte técnico de ABRA Flexi s.r.o. por su santa paciencia al responder a mis preguntas e informes de errores no siempre inteligentes.
El análisis de los resultados para fines de registro del RGPD se ha perfeccionado con el amable apoyo de <PureHTML>.
composer require spoje.net/ FlexiPeeHP
si su compositor.json resultante se verá así:
{
"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 "
}
el comando de instalación del compositor inicia la instalación:
La configuración se realiza estableciendo las siguientes 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é
o se pueden proporcionar credenciales al crear una instancia de la clase.
$ invoicer = new FlexiPeeHP FakturaVydana ( null ,[
' company ' => ' Firma_s_r_o_ ' ,
' url ' => ' https://flexibee.firma.cz/ ' ,
' user ' => ' rest ' ,
' password ' => ' -dj3x21xaA_ '
]);
Este método de configuración tiene una prioridad más alta que las constantes definidas anteriormente.
$ order = new FlexiPeeHP ObjednavkaPrijata( ' code:OBP0034/2019 ' ,[ ' companyUrl ' => $ _GET [ ' companyUrl ' ], ' authSessionId ' => $ _GET [ ' authSessionId ' ] ])
De esta manera, una aplicación llamada por un botón de usuario que pasa los valores companyUrl y authSessionId puede conectarse al flexibee y al pedido concreto.
El componente central de toda la biblioteca es la clase FlexiBeeRO, que puede comunicarse con la API REST de FlexiBee utilizando la extensión PHP curl.
A partir de él se derivan clases para registros individuales que contienen métodos para operaciones utilizadas con frecuencia, por ejemplo "Pagar" en el caso de facturas recibidas.
Se crea una nueva clase derivada de tal forma que el nombre de la clase sea el nombre del registro, pero sin guiones. Estos se reemplazan por una letra mayúscula en el nombre.
function evidenceToClass ( $ evidence )
{
return str_replace ( ' ' , '' , ucwords ( str_replace ( ' - ' , ' ' , $ evidence )));
}
Eso es Si queremos derivar una nueva clase para el registro "Unidades de medida", se verá así:
<?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 ' ;
}
Y luego es fácil escribir las unidades de medida en 2 líneas:
$ jednotky = new MernaJednotka ();
print_r ( $ jednotky -> getAllFromFlexiBee () );
Si queremos que la clase recién creada pueda escribir en flexibee, debe derivarse del antepasado FlexiBeeRW.
Se pueden encontrar más ejemplos de uso en un proyecto separado.
En algunos casos es bueno saber qué acciones podemos realizar, o cuál es la estructura de los registros. Esta información se puede obtener llamando a https://demo.flexibee.eu/c/demo/*/properties.json o https://demo.flexibee.eu/c/demo/*/actions.json, pero esto es operación que consume relativamente tiempo. Dado que la estructura de registros y Acciones o relaciones entre registros de FlexiBee no cambian con frecuencia, FlexiPeeHP cuenta con un mecanismo que permite trabajar con estos datos sin necesidad de consultar al servidor.
La estructura se almacena en la clase Estructura (Acciones, Relaciones) que contiene un campo definido estáticamente que contiene información que de otro modo tendría que obtenerse de FlexiBee.
El elemento de la lista de pruebas https://demo.flexibee.eu/c/demo/evidence-list se puede mostrar fácilmente en cualquier momento:
echo FlexiPeeHP Structure:: $ evidence [ ' faktura-vydana ' ];
Luego, las estructuras de los registros individuales se almacenan en variables estáticas. Su nombre sigue las mismas reglas que para crear un nuevo nombre de clase, excepto que la primera letra está en minúscula. Eso es:
lcfirst ( FlexiPeeHP FlexiBeeRO:: evidenceToClassName ( $ evidence ))
Si es necesario, estas clases se pueden generar con el contenido actual mediante el siguiente comando:
cd tools/
./update_all.sh
La operación dura unos minutos. Podemos mostrar el progreso de la siguiente manera:
tail -f /var/log/syslog | grep FlexiPeeHP test
Si configura $this->debug en verdadero en objetos FlexiPeeHP , se realizarán pruebas adicionales antes de enviar datos a FlexiBee. Se comprueban los siguientes posibles errores:
En el modo de depuración, todas las solicitudes de flexibee y sus respuestas también se guardan en la carpeta /tmp
La biblioteca incluye un mecanismo para enviar errores de tiempo de ejecución de FlexiBee a los desarrolladores:
Si FlexiBee devuelve un error interno del servidor 500, se envía a los desarrolladores un correo electrónico que contiene el mensaje de error.
Si se utiliza FlexiBee ejecutándose en el mismo servidor y es posible leer los registros de errores, se extrae de ellos un fragmento apropiado y se agrega al cuerpo del correo.
El correo electrónico también contiene información adicional sobre la licencia y los módulos habilitados.
También se adjuntan como archivos adjuntos archivos que contienen el cuerpo de la solicitud al servidor, el cuerpo de su respuesta y un archivo que contiene información sobre curl.
Durante la vida útil del objeto, los errores se registran y solo se envía el primero de cada tipo.
Las pruebas de PHPUnit se encuentran en la carpeta de pruebas . Si desea realizar la prueba en un servidor que no sea el http://demo.flexibee.eu/ oficial, debe cambiar la configuración en el archivo bootstrap.php .
El contenido de la variable $testServer determina cuál de las configuraciones predeterminadas se utilizará. Y, por supuesto, puedes definir el tuyo propio. A modo de ejemplo, aquí se muestra el servidor de prueba spoje.net.
Para realizar pruebas, primero cree una empresa de pruebas TESTING s.r.o. y configure los datos de acceso de un usuario autorizado para utilizar la API REST. (¿Cuál es el usuario administrador especificado cuando se instaló FlexiBee?)
Advertencia: la prueba con una empresa con muchas facturas y un banco conectado puede llevar algún tiempo, ya que también se prueba la llamada automática de cotejo de documentos.
Si decide heredar FlexiPeeHP en su proyecto y escribir pruebas para estas clases también heredadas de FlexiPeeHP , por ejemplo:
clase HookRecieverTest extiende Test FlexiPeeHP ChangesTest
También agregue las rutas a las pruebas originales a su 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 /",
}
}
En la carpeta Ejemplos se encuentran los siguientes ejemplos de uso:
Archivo | Descripción |
---|---|
Archivo adjuntoSaveToFile.php | guardar el archivo adjunto en un archivo |
Archivo adjunto.php | subir archivo adjunto |
AuthSessionIdUsage.php | Ejemplo de autenticación AuthSessionId |
AutenticarContacto.php | autenticación de contacto |
Operación por lotes.php | Usar un filtro en operaciones por lotes |
CrearEtiqueta.php | trabajar con etiquetas |
DryRun.php | Almacenamiento de prueba (ejecución en seco) |
DescargarFacturaPDF.php | descargar factura en pdf |
Error404.php | trabajar con registros inexistentes |
Buscarfacturas vencidas.php | encontrar facturas vencidas |
ObtenerRecordWithRelation.php | Obtención de un registro que incluya datos del subdébito |
GetBankAccountForCompany.php | Obtener una cuenta bancaria para una empresa del directorio |
FacturaLockUnlock.php | Bloquear y desbloquear el registro |
Copia de factura.php | creación de un documento fiscal a partir del pago anticipado |
Iniciar sesiónCerrar sesión | inicio de sesión y cierre de sesión de usuario |
NajdiDanovyDokladKzalohovemu.php | rastreo de documentos |
Almacenamiento.php | Producto en stock con números de serie. |
NuevaFactura.php | Nueva factura con fecha de vencimiento escrita como json |
Encadenamiento de objetos.php | Encadenamiento de objetos para múltiples operaciones solo en una cola |
ObjetoCooperación.php | Compartir datos y parámetros de conexión entre objetos. |
RealizandoAcciones.php | Cómo realizar acciones en un documento de acción. p.ej. cancelación |
LeerColumnasDirección.php | devolver columnas específicas |
enviarFacturaPorCorreo.php | enviando la factura por correo electrónico |
EnviarRecordatorios.php | enviando recordatorios |
SetContactAuth.php | configuración de autenticación |
PruebaConexión.php | verificación de conexión |
docker pull vitexsoftware/ FlexiPeeHP
Hay paquetes .deb disponibles para Linux. Utilice el repositorio:
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
En este caso, debe agregar lo siguiente al archivo compositor.json de su aplicación:
"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
}
}
]
Entonces, cuando instales las dependencias, se verá así:
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
Y será posible actualizar globalmente todo el sistema a través de apt-get.
También generamos el paquete FlexiPeeHP -doc , que contiene documentación para desarrolladores generada con el programa ApiGen. La documentación está disponible en línea en http://flexibee-dev.spoje.net/FlexiPeeHP/
Pruebas:
cd /usr/share/doc/ FlexiPeeHP /
composer install
php -f flexibeeping.php
Creamos el paquete Debian ejecutando make deb
Imagen acoplable:
docker build -t vitexsoftware/ FlexiPeeHP
Estadísticas de trabajo en el proyecto WakaTime