diff --git a/.gitignore b/.gitignore
index b656f0851..494f4bf7b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -48,3 +48,4 @@ local/*
include/tfpdf/font/unifont/*
html/ads.html
doc/code/*
+nbproject/private/
diff --git a/Doxyfile b/Doxyfile
index 09d5e7ff2..4abe7bc3c 100644
--- a/Doxyfile
+++ b/Doxyfile
@@ -47,7 +47,8 @@ PROJECT_NAME = noalyss
# could be handy for archiving the generated documentation or if some version
# control system is used.
-PROJECT_NUMBER = Version-9
+PROJECT_NUMBER = Version-10
+
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
@@ -218,7 +219,7 @@ JAVADOC_AUTOBRIEF = YES
# interpreted by doxygen.
# The default value is: NO.
-JAVADOC_BANNER = NO
+JAVADOC_BANNER = YES
# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
# line (until the first dot) of a Qt-style comment as the brief description. If
@@ -995,7 +996,11 @@ EXCLUDE = ./html/addon \
./unit-test \
./include/ext \
./include/config.inc.php \
- ./tmp/
+ ./vendor \
+ ./include/tfpdf \
+ ./tmp/ \
+ ./html/js/tinymce
+
# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
# directories that are symbolic links (a Unix file system feature) are excluded
diff --git a/README b/README
index c857bc690..1e84e3315 100644
--- a/README
+++ b/README
@@ -1 +1,36 @@
-Toute la documentation se trouve sur https://gitlab.com/noalyss/noalyss-documentation
+ NOALYSS
+==================
+NOALYSS est un programme éthique, c'est-à-dire qu'il est libre (GNU/GPL2),
+vous pouvez l'utiliser, l'étudier et contribuer au développement,
+il n'y a aucune publicité ou traquage.
+
+NOALYSS est la première plate-forme de comptabilité et ERP, elle est née en 2002
+, c'est-à-dire qu'une fois installée sur un serveur , un PC
+ou dans une machine virtuelle, elle peut héberger
+la comptabilité de centaines de sociétés et d'utilisateurs.
+
+Chaque dossier est séparé et n'est accessible qu'à ceux à qui l'accès a été
+explicitement donné.
+
+La partie comptabilité est particulièrement flexible et puissante.
+
+NOALYSS permet aussi par dossier de gérer tous les événements d'une société:
+de la gestion des fournisseurs aux déclarations fiscales, en passant par
+la documentation et bien plus.
+
+Elle permet aussi de faire des prévisions et de comparer
+avec la réalité, de gérer les stocks, de faire de la comptabilité analytique,
+de sortir les FECS, ...
+
+Si vous avez besoin de support, vous pouvez en demander soit sur les forums de
+NOALYSS : https://forum.noalyss.eu soit par email dans les listes de diffusion:
+https://lists.nongnu.org/mailman/listinfo/noalyss-generale.
+
+La documentation est libre :
+
+- Manuel ( https://manuel-fr.noalyss.eu/ )
+- wiki (https://wiki.noalyss.eu/doku.php?id=Noalyss)
+- Tutoriel vidéo (https://www.youtube.com/@noalyss11)
+- Apprendre à développer avec NOALYSS ( https://manuel-fr.noalyss.eu/#_d%C3%A9veloppement_noalyss )
+
+Voyez aussi la démo : https://demo.noalyss.eu
diff --git a/composer.json b/composer.json
new file mode 100644
index 000000000..855d603cc
--- /dev/null
+++ b/composer.json
@@ -0,0 +1,10 @@
+{
+ "require": {
+ "horstoeko/zugferd": "^1.0",
+ "php-curl-class/php-curl-class": "^12.0",
+ "chillerlan/php-authenticator": "^5.2",
+ "endroid/qr-code": "^6.0",
+ "smalot/pdfparser": "^2.12",
+ "phpmailer/phpmailer": "^7.0"
+ }
+}
diff --git a/composer.lock b/composer.lock
new file mode 100644
index 000000000..806385137
--- /dev/null
+++ b/composer.lock
@@ -0,0 +1,2056 @@
+{
+ "_readme": [
+ "This file locks the dependencies of your project to a known state",
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
+ "This file is @generated automatically"
+ ],
+ "content-hash": "d6b57bd2081bafbe6bf8c26579cc52b4",
+ "packages": [
+ {
+ "name": "bacon/bacon-qr-code",
+ "version": "v3.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Bacon/BaconQrCode.git",
+ "reference": "36a1cb2b81493fa5b82e50bf8068bf84d1542563"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Bacon/BaconQrCode/zipball/36a1cb2b81493fa5b82e50bf8068bf84d1542563",
+ "reference": "36a1cb2b81493fa5b82e50bf8068bf84d1542563",
+ "shasum": ""
+ },
+ "require": {
+ "dasprid/enum": "^1.0.3",
+ "ext-iconv": "*",
+ "php": "^8.1"
+ },
+ "require-dev": {
+ "phly/keep-a-changelog": "^2.12",
+ "phpunit/phpunit": "^10.5.11 || ^11.0.4",
+ "spatie/phpunit-snapshot-assertions": "^5.1.5",
+ "spatie/pixelmatch-php": "^1.2.0",
+ "squizlabs/php_codesniffer": "^3.9"
+ },
+ "suggest": {
+ "ext-imagick": "to generate QR code images"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "BaconQrCode\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-2-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Ben Scholzen 'DASPRiD'",
+ "email": "mail@dasprids.de",
+ "homepage": "https://dasprids.de/",
+ "role": "Developer"
+ }
+ ],
+ "description": "BaconQrCode is a QR code generator for PHP.",
+ "homepage": "https://github.com/Bacon/BaconQrCode",
+ "support": {
+ "issues": "https://github.com/Bacon/BaconQrCode/issues",
+ "source": "https://github.com/Bacon/BaconQrCode/tree/v3.0.3"
+ },
+ "time": "2025-11-19T17:15:36+00:00"
+ },
+ {
+ "name": "chillerlan/php-authenticator",
+ "version": "5.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/chillerlan/php-authenticator.git",
+ "reference": "040318f0055421ff1ee52f6afa13e5f60a88ade9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/chillerlan/php-authenticator/zipball/040318f0055421ff1ee52f6afa13e5f60a88ade9",
+ "reference": "040318f0055421ff1ee52f6afa13e5f60a88ade9",
+ "shasum": ""
+ },
+ "require": {
+ "chillerlan/php-settings-container": "^3.2.1",
+ "paragonie/constant_time_encoding": "^3.0",
+ "php": "^8.2"
+ },
+ "require-dev": {
+ "ext-curl": "*",
+ "ext-json": "*",
+ "ext-sodium": "*",
+ "phpmd/phpmd": "^2.15",
+ "phpstan/phpstan": "^1.11",
+ "phpstan/phpstan-deprecation-rules": "^1.2",
+ "phpunit/phpunit": "^11.2",
+ "squizlabs/php_codesniffer": "^3.10"
+ },
+ "suggest": {
+ "chillerlan/php-qrcode": "Create QR Codes for use with an authenticator app."
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "chillerlan\\Authenticator\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Smiley",
+ "email": "smiley@chillerlan.net",
+ "homepage": "https://github.com/codemasher"
+ },
+ {
+ "name": "Contributors",
+ "homepage": "https://github.com/chillerlan/php-authenticator/graphs/contributors"
+ }
+ ],
+ "description": "A generator for counter- and time based 2-factor authentication codes (Google Authenticator). PHP 8.2+",
+ "homepage": "https://github.com/chillerlan/php-authenticator",
+ "keywords": [
+ "2fa",
+ "MFA",
+ "authenticator",
+ "google2fa",
+ "hotp",
+ "otp",
+ "rfc4226",
+ "rfc6238",
+ "tfa",
+ "totp",
+ "two factor"
+ ],
+ "support": {
+ "issues": "https://github.com/chillerlan/php-authenticator/issues",
+ "source": "https://github.com/chillerlan/php-authenticator"
+ },
+ "funding": [
+ {
+ "url": "https://ko-fi.com/codemasher",
+ "type": "Ko-Fi"
+ }
+ ],
+ "time": "2024-07-16T23:53:16+00:00"
+ },
+ {
+ "name": "chillerlan/php-settings-container",
+ "version": "3.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/chillerlan/php-settings-container.git",
+ "reference": "95ed3e9676a1d47cab2e3174d19b43f5dbf52681"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/chillerlan/php-settings-container/zipball/95ed3e9676a1d47cab2e3174d19b43f5dbf52681",
+ "reference": "95ed3e9676a1d47cab2e3174d19b43f5dbf52681",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "php": "^8.1"
+ },
+ "require-dev": {
+ "phpmd/phpmd": "^2.15",
+ "phpstan/phpstan": "^1.11",
+ "phpstan/phpstan-deprecation-rules": "^1.2",
+ "phpunit/phpunit": "^10.5",
+ "squizlabs/php_codesniffer": "^3.10"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "chillerlan\\Settings\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Smiley",
+ "email": "smiley@chillerlan.net",
+ "homepage": "https://github.com/codemasher"
+ }
+ ],
+ "description": "A container class for immutable settings objects. Not a DI container.",
+ "homepage": "https://github.com/chillerlan/php-settings-container",
+ "keywords": [
+ "Settings",
+ "configuration",
+ "container",
+ "helper"
+ ],
+ "support": {
+ "issues": "https://github.com/chillerlan/php-settings-container/issues",
+ "source": "https://github.com/chillerlan/php-settings-container"
+ },
+ "funding": [
+ {
+ "url": "https://www.paypal.com/donate?hosted_button_id=WLYUNAT9ZTJZ4",
+ "type": "custom"
+ },
+ {
+ "url": "https://ko-fi.com/codemasher",
+ "type": "ko_fi"
+ }
+ ],
+ "time": "2024-07-16T11:13:48+00:00"
+ },
+ {
+ "name": "dasprid/enum",
+ "version": "1.0.7",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/DASPRiD/Enum.git",
+ "reference": "b5874fa9ed0043116c72162ec7f4fb50e02e7cce"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/DASPRiD/Enum/zipball/b5874fa9ed0043116c72162ec7f4fb50e02e7cce",
+ "reference": "b5874fa9ed0043116c72162ec7f4fb50e02e7cce",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1 <9.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7 || ^8 || ^9 || ^10 || ^11",
+ "squizlabs/php_codesniffer": "*"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "DASPRiD\\Enum\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-2-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Ben Scholzen 'DASPRiD'",
+ "email": "mail@dasprids.de",
+ "homepage": "https://dasprids.de/",
+ "role": "Developer"
+ }
+ ],
+ "description": "PHP 7.1 enum implementation",
+ "keywords": [
+ "enum",
+ "map"
+ ],
+ "support": {
+ "issues": "https://github.com/DASPRiD/Enum/issues",
+ "source": "https://github.com/DASPRiD/Enum/tree/1.0.7"
+ },
+ "time": "2025-09-16T12:23:56+00:00"
+ },
+ {
+ "name": "doctrine/instantiator",
+ "version": "2.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/instantiator.git",
+ "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0",
+ "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^8.1"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^11",
+ "ext-pdo": "*",
+ "ext-phar": "*",
+ "phpbench/phpbench": "^1.2",
+ "phpstan/phpstan": "^1.9.4",
+ "phpstan/phpstan-phpunit": "^1.3",
+ "phpunit/phpunit": "^9.5.27",
+ "vimeo/psalm": "^5.4"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com",
+ "homepage": "https://ocramius.github.io/"
+ }
+ ],
+ "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+ "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
+ "keywords": [
+ "constructor",
+ "instantiate"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/instantiator/issues",
+ "source": "https://github.com/doctrine/instantiator/tree/2.0.0"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-12-30T00:23:10+00:00"
+ },
+ {
+ "name": "doctrine/lexer",
+ "version": "3.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/lexer.git",
+ "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/lexer/zipball/31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd",
+ "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^8.1"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^12",
+ "phpstan/phpstan": "^1.10",
+ "phpunit/phpunit": "^10.5",
+ "psalm/plugin-phpunit": "^0.18.3",
+ "vimeo/psalm": "^5.21"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Common\\Lexer\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.",
+ "homepage": "https://www.doctrine-project.org/projects/lexer.html",
+ "keywords": [
+ "annotations",
+ "docblock",
+ "lexer",
+ "parser",
+ "php"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/lexer/issues",
+ "source": "https://github.com/doctrine/lexer/tree/3.0.1"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-02-05T11:56:58+00:00"
+ },
+ {
+ "name": "endroid/qr-code",
+ "version": "6.0.9",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/endroid/qr-code.git",
+ "reference": "21e888e8597440b2205e2e5c484b6c8e556bcd1a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/endroid/qr-code/zipball/21e888e8597440b2205e2e5c484b6c8e556bcd1a",
+ "reference": "21e888e8597440b2205e2e5c484b6c8e556bcd1a",
+ "shasum": ""
+ },
+ "require": {
+ "bacon/bacon-qr-code": "^3.0",
+ "php": "^8.2"
+ },
+ "require-dev": {
+ "endroid/quality": "dev-main",
+ "ext-gd": "*",
+ "khanamiryan/qrcode-detector-decoder": "^2.0.2",
+ "setasign/fpdf": "^1.8.2"
+ },
+ "suggest": {
+ "ext-gd": "Enables you to write PNG images",
+ "khanamiryan/qrcode-detector-decoder": "Enables you to use the image validator",
+ "roave/security-advisories": "Makes sure package versions with known security issues are not installed",
+ "setasign/fpdf": "Enables you to use the PDF writer"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "6.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Endroid\\QrCode\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jeroen van den Enden",
+ "email": "info@endroid.nl"
+ }
+ ],
+ "description": "Endroid QR Code",
+ "homepage": "https://github.com/endroid/qr-code",
+ "keywords": [
+ "code",
+ "endroid",
+ "php",
+ "qr",
+ "qrcode"
+ ],
+ "support": {
+ "issues": "https://github.com/endroid/qr-code/issues",
+ "source": "https://github.com/endroid/qr-code/tree/6.0.9"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/endroid",
+ "type": "github"
+ }
+ ],
+ "time": "2025-07-13T19:59:45+00:00"
+ },
+ {
+ "name": "goetas-webservices/xsd2php-runtime",
+ "version": "v0.2.17",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/goetas-webservices/xsd2php-runtime.git",
+ "reference": "be15c48cda6adfab82e180a69dfa1937e208cfe1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/goetas-webservices/xsd2php-runtime/zipball/be15c48cda6adfab82e180a69dfa1937e208cfe1",
+ "reference": "be15c48cda6adfab82e180a69dfa1937e208cfe1",
+ "shasum": ""
+ },
+ "require": {
+ "jms/serializer": "^1.2|^2.0|^3.0",
+ "php": ">=7.1",
+ "symfony/yaml": "^2.2|^3.0|^4.0|^5.0|^6.0|^7.0"
+ },
+ "conflict": {
+ "jms/serializer": "1.4.1|1.6.1|1.6.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7.0|^8.0|^9.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "0.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "GoetasWebservices\\Xsd\\XsdToPhpRuntime\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Asmir Mustafic"
+ }
+ ],
+ "description": "Convert XSD (XML Schema) definitions into PHP classes",
+ "keywords": [
+ "converter",
+ "jms",
+ "php",
+ "serializer",
+ "xml",
+ "xsd"
+ ],
+ "support": {
+ "issues": "https://github.com/goetas-webservices/xsd2php-runtime/issues",
+ "source": "https://github.com/goetas-webservices/xsd2php-runtime/tree/v0.2.17"
+ },
+ "time": "2024-04-12T22:55:31+00:00"
+ },
+ {
+ "name": "horstoeko/mimedb",
+ "version": "v1.0.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/horstoeko/mimedb.git",
+ "reference": "2d50f2b6bf63f14741514682869b53fc97232308"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/horstoeko/mimedb/zipball/2d50f2b6bf63f14741514682869b53fc97232308",
+ "reference": "2d50f2b6bf63f14741514682869b53fc97232308",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "pdepend/pdepend": "^2",
+ "phploc/phploc": "^7",
+ "phpmd/phpmd": "^2",
+ "phpstan/phpstan": "^1.8",
+ "phpunit/phpunit": "^9",
+ "sebastian/phpcpd": "^6",
+ "squizlabs/php_codesniffer": "^3"
+ },
+ "type": "package",
+ "autoload": {
+ "psr-4": {
+ "horstoeko\\mimedb\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Daniel Erling",
+ "email": "daniel@erling.com.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Get mimetypes by fileextensions and visa versa",
+ "homepage": "https://github.com/horstoeko/mimedb",
+ "keywords": [
+ "file extension",
+ "mimetype"
+ ],
+ "support": {
+ "issues": "https://github.com/horstoeko/mimedb/issues",
+ "source": "https://github.com/horstoeko/mimedb/tree/v1.0.8"
+ },
+ "time": "2024-12-03T10:57:28+00:00"
+ },
+ {
+ "name": "horstoeko/stringmanagement",
+ "version": "v1.0.12",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/horstoeko/stringmanagement.git",
+ "reference": "d304a094e34c39d35f275bccf4944176dd8f1722"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/horstoeko/stringmanagement/zipball/d304a094e34c39d35f275bccf4944176dd8f1722",
+ "reference": "d304a094e34c39d35f275bccf4944176dd8f1722",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "nette/php-generator": "*",
+ "pdepend/pdepend": "^2",
+ "phpdocumentor/reflection-docblock": "^5",
+ "phploc/phploc": "^7",
+ "phpmd/phpmd": "^2",
+ "phpstan/phpstan": "^1|^2",
+ "phpunit/phpunit": "^9",
+ "rector/rector": "*",
+ "sebastian/phpcpd": "^6",
+ "squizlabs/php_codesniffer": "^3"
+ },
+ "type": "package",
+ "autoload": {
+ "psr-4": {
+ "horstoeko\\stringmanagement\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Daniel Erling",
+ "email": "daniel@erling.com.de",
+ "role": "lead"
+ }
+ ],
+ "description": "A library for string manipulation utilities",
+ "homepage": "https://github.com/horstoeko/stringmanagement",
+ "keywords": [
+ "stringmanagement"
+ ],
+ "support": {
+ "issues": "https://github.com/horstoeko/stringmanagement/issues",
+ "source": "https://github.com/horstoeko/stringmanagement/tree/v1.0.12"
+ },
+ "time": "2025-03-15T09:04:46+00:00"
+ },
+ {
+ "name": "horstoeko/zugferd",
+ "version": "v1.0.117",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/horstoeko/zugferd.git",
+ "reference": "7c2fdb58e0910e199b1fd2162ae5d33a1e62e933"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/horstoeko/zugferd/zipball/7c2fdb58e0910e199b1fd2162ae5d33a1e62e933",
+ "reference": "7c2fdb58e0910e199b1fd2162ae5d33a1e62e933",
+ "shasum": ""
+ },
+ "require": {
+ "ext-simplexml": "*",
+ "goetas-webservices/xsd2php-runtime": "^0.2.13",
+ "horstoeko/mimedb": "^1",
+ "horstoeko/stringmanagement": "^1",
+ "jms/serializer": "^3",
+ "php": ">=7.3",
+ "setasign/fpdf": "^1",
+ "setasign/fpdi": "^2",
+ "smalot/pdfparser": "^0|^2",
+ "symfony/finder": "^5|^6|^7",
+ "symfony/process": "^5|^6|^7",
+ "symfony/validator": "^5|^6|^7",
+ "symfony/yaml": "^5|^6|^7"
+ },
+ "require-dev": {
+ "goetas-webservices/xsd2php": "^0",
+ "nette/php-generator": "*",
+ "pdepend/pdepend": "^2",
+ "phpdocumentor/reflection-docblock": "^5",
+ "phploc/phploc": "^7",
+ "phpmd/phpmd": "^2",
+ "phpstan/phpstan": "^1|^2",
+ "phpunit/phpunit": "^9",
+ "rector/rector": "*",
+ "sebastian/phpcpd": "^6",
+ "squizlabs/php_codesniffer": "^3"
+ },
+ "type": "package",
+ "autoload": {
+ "psr-4": {
+ "horstoeko\\zugferd\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Daniel Erling",
+ "email": "daniel@erling.com.de",
+ "role": "lead"
+ }
+ ],
+ "description": "A library for creating and reading european electronic invoices",
+ "homepage": "https://github.com/horstoeko/zugferd",
+ "keywords": [
+ "ZUGFeRD",
+ "electronic",
+ "factur-x",
+ "invoice",
+ "xrechnung"
+ ],
+ "support": {
+ "issues": "https://github.com/horstoeko/zugferd/issues",
+ "source": "https://github.com/horstoeko/zugferd/tree/v1.0.117"
+ },
+ "time": "2025-11-17T14:09:15+00:00"
+ },
+ {
+ "name": "jms/metadata",
+ "version": "2.8.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/schmittjoh/metadata.git",
+ "reference": "7ca240dcac0c655eb15933ee55736ccd2ea0d7a6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/schmittjoh/metadata/zipball/7ca240dcac0c655eb15933ee55736ccd2ea0d7a6",
+ "reference": "7ca240dcac0c655eb15933ee55736ccd2ea0d7a6",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2|^8.0"
+ },
+ "require-dev": {
+ "doctrine/cache": "^1.0",
+ "doctrine/coding-standard": "^8.0",
+ "mikey179/vfsstream": "^1.6.7",
+ "phpunit/phpunit": "^8.5|^9.0",
+ "psr/container": "^1.0|^2.0",
+ "symfony/cache": "^3.1|^4.0|^5.0",
+ "symfony/dependency-injection": "^3.1|^4.0|^5.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Metadata\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Johannes M. Schmitt",
+ "email": "schmittjoh@gmail.com"
+ },
+ {
+ "name": "Asmir Mustafic",
+ "email": "goetas@gmail.com"
+ }
+ ],
+ "description": "Class/method/property metadata management in PHP",
+ "keywords": [
+ "annotations",
+ "metadata",
+ "xml",
+ "yaml"
+ ],
+ "support": {
+ "issues": "https://github.com/schmittjoh/metadata/issues",
+ "source": "https://github.com/schmittjoh/metadata/tree/2.8.0"
+ },
+ "time": "2023-02-15T13:44:18+00:00"
+ },
+ {
+ "name": "jms/serializer",
+ "version": "3.32.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/schmittjoh/serializer.git",
+ "reference": "7c88b1b02ff868eecc870eeddbb3b1250e4bd89c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/7c88b1b02ff868eecc870eeddbb3b1250e4bd89c",
+ "reference": "7c88b1b02ff868eecc870eeddbb3b1250e4bd89c",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.3.1 || ^2.0",
+ "doctrine/lexer": "^2.0 || ^3.0",
+ "jms/metadata": "^2.6",
+ "php": "^7.4 || ^8.0",
+ "phpstan/phpdoc-parser": "^1.20 || ^2.0"
+ },
+ "require-dev": {
+ "doctrine/annotations": "^1.14 || ^2.0",
+ "doctrine/coding-standard": "^12.0",
+ "doctrine/orm": "^2.14 || ^3.0",
+ "doctrine/persistence": "^2.5.2 || ^3.0",
+ "doctrine/phpcr-odm": "^1.5.2 || ^2.0",
+ "ext-pdo_sqlite": "*",
+ "jackalope/jackalope-doctrine-dbal": "^1.3",
+ "ocramius/proxy-manager": "^1.0 || ^2.0",
+ "phpbench/phpbench": "^1.0",
+ "phpstan/phpstan": "^2.0",
+ "phpunit/phpunit": "^9.0 || ^10.0 || ^11.0",
+ "psr/container": "^1.0 || ^2.0",
+ "rector/rector": "^1.0.0 || ^2.0@dev",
+ "slevomat/coding-standard": "dev-master#f2cc4c553eae68772624ffd7dd99022343b69c31 as 8.11.9999",
+ "symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0",
+ "symfony/expression-language": "^5.4 || ^6.0 || ^7.0",
+ "symfony/filesystem": "^5.4 || ^6.0 || ^7.0",
+ "symfony/form": "^5.4 || ^6.0 || ^7.0",
+ "symfony/translation": "^5.4 || ^6.0 || ^7.0",
+ "symfony/uid": "^5.4 || ^6.0 || ^7.0",
+ "symfony/validator": "^5.4 || ^6.0 || ^7.0",
+ "symfony/yaml": "^5.4 || ^6.0 || ^7.0",
+ "twig/twig": "^1.34 || ^2.4 || ^3.0"
+ },
+ "suggest": {
+ "doctrine/collections": "Required if you like to use doctrine collection types as ArrayCollection.",
+ "symfony/cache": "Required if you like to use cache functionality.",
+ "symfony/uid": "Required if you'd like to serialize UID objects.",
+ "symfony/yaml": "Required if you'd like to use the YAML metadata format."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "JMS\\Serializer\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Johannes M. Schmitt",
+ "email": "schmittjoh@gmail.com"
+ },
+ {
+ "name": "Asmir Mustafic",
+ "email": "goetas@gmail.com"
+ }
+ ],
+ "description": "Library for (de-)serializing data of any complexity; supports XML, and JSON.",
+ "homepage": "http://jmsyst.com/libs/serializer",
+ "keywords": [
+ "deserialization",
+ "jaxb",
+ "json",
+ "serialization",
+ "xml"
+ ],
+ "support": {
+ "issues": "https://github.com/schmittjoh/serializer/issues",
+ "source": "https://github.com/schmittjoh/serializer/tree/3.32.5"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/goetas",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/scyzoryck",
+ "type": "github"
+ }
+ ],
+ "time": "2025-05-26T15:55:41+00:00"
+ },
+ {
+ "name": "paragonie/constant_time_encoding",
+ "version": "v3.1.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/paragonie/constant_time_encoding.git",
+ "reference": "d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77",
+ "reference": "d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^8"
+ },
+ "require-dev": {
+ "infection/infection": "^0",
+ "nikic/php-fuzzer": "^0",
+ "phpunit/phpunit": "^9|^10|^11",
+ "vimeo/psalm": "^4|^5|^6"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "ParagonIE\\ConstantTime\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Paragon Initiative Enterprises",
+ "email": "security@paragonie.com",
+ "homepage": "https://paragonie.com",
+ "role": "Maintainer"
+ },
+ {
+ "name": "Steve 'Sc00bz' Thomas",
+ "email": "steve@tobtu.com",
+ "homepage": "https://www.tobtu.com",
+ "role": "Original Developer"
+ }
+ ],
+ "description": "Constant-time Implementations of RFC 4648 Encoding (Base-64, Base-32, Base-16)",
+ "keywords": [
+ "base16",
+ "base32",
+ "base32_decode",
+ "base32_encode",
+ "base64",
+ "base64_decode",
+ "base64_encode",
+ "bin2hex",
+ "encoding",
+ "hex",
+ "hex2bin",
+ "rfc4648"
+ ],
+ "support": {
+ "email": "info@paragonie.com",
+ "issues": "https://github.com/paragonie/constant_time_encoding/issues",
+ "source": "https://github.com/paragonie/constant_time_encoding"
+ },
+ "time": "2025-09-24T15:06:41+00:00"
+ },
+ {
+ "name": "php-curl-class/php-curl-class",
+ "version": "12.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-curl-class/php-curl-class.git",
+ "reference": "064e78f89ab897284c1d098079fd121a0aac7ad7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-curl-class/php-curl-class/zipball/064e78f89ab897284c1d098079fd121a0aac7ad7",
+ "reference": "064e78f89ab897284c1d098079fd121a0aac7ad7",
+ "shasum": ""
+ },
+ "require": {
+ "ext-curl": "*",
+ "php": ">=8.0"
+ },
+ "require-dev": {
+ "dealerdirect/phpcodesniffer-composer-installer": "*",
+ "ext-gd": "*",
+ "friendsofphp/php-cs-fixer": "*",
+ "phpcompatibility/php-compatibility": "dev-develop",
+ "phpcsstandards/phpcsutils": "@alpha",
+ "phpstan/phpstan": "*",
+ "phpunit/phpunit": "*",
+ "squizlabs/php_codesniffer": "*"
+ },
+ "suggest": {
+ "ext-mbstring": "*"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Curl\\": "src/Curl/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Unlicense"
+ ],
+ "authors": [
+ {
+ "name": "Zach Borboa"
+ },
+ {
+ "name": "Contributors",
+ "homepage": "https://github.com/php-curl-class/php-curl-class/graphs/contributors"
+ }
+ ],
+ "description": "PHP Curl Class makes it easy to send HTTP requests and integrate with web APIs.",
+ "homepage": "https://github.com/php-curl-class/php-curl-class",
+ "keywords": [
+ "API-Client",
+ "api",
+ "class",
+ "client",
+ "curl",
+ "framework",
+ "http",
+ "http-client",
+ "http-proxy",
+ "json",
+ "php",
+ "php-curl",
+ "php-curl-library",
+ "proxy",
+ "requests",
+ "restful",
+ "web-scraper",
+ "web-scraping ",
+ "web-service",
+ "xml"
+ ],
+ "support": {
+ "issues": "https://github.com/php-curl-class/php-curl-class/issues",
+ "source": "https://github.com/php-curl-class/php-curl-class/tree/12.0.2"
+ },
+ "time": "2025-11-18T19:37:10+00:00"
+ },
+ {
+ "name": "phpmailer/phpmailer",
+ "version": "v7.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/PHPMailer/PHPMailer.git",
+ "reference": "c7111310c6116ba508a6a170a89eaaed2129bd42"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/c7111310c6116ba508a6a170a89eaaed2129bd42",
+ "reference": "c7111310c6116ba508a6a170a89eaaed2129bd42",
+ "shasum": ""
+ },
+ "require": {
+ "ext-ctype": "*",
+ "ext-filter": "*",
+ "ext-hash": "*",
+ "php": ">=5.5.0"
+ },
+ "require-dev": {
+ "dealerdirect/phpcodesniffer-composer-installer": "^1.0",
+ "doctrine/annotations": "^1.2.6 || ^1.13.3",
+ "php-parallel-lint/php-console-highlighter": "^1.0.0",
+ "php-parallel-lint/php-parallel-lint": "^1.3.2",
+ "phpcompatibility/php-compatibility": "^9.3.5",
+ "roave/security-advisories": "dev-latest",
+ "squizlabs/php_codesniffer": "^3.7.2",
+ "yoast/phpunit-polyfills": "^1.0.4"
+ },
+ "suggest": {
+ "decomplexity/SendOauth2": "Adapter for using XOAUTH2 authentication",
+ "ext-imap": "Needed to support advanced email address parsing according to RFC822",
+ "ext-mbstring": "Needed to send email in multibyte encoding charset or decode encoded addresses",
+ "ext-openssl": "Needed for secure SMTP sending and DKIM signing",
+ "greew/oauth2-azure-provider": "Needed for Microsoft Azure XOAUTH2 authentication",
+ "hayageek/oauth2-yahoo": "Needed for Yahoo XOAUTH2 authentication",
+ "league/oauth2-google": "Needed for Google XOAUTH2 authentication",
+ "psr/log": "For optional PSR-3 debug logging",
+ "symfony/polyfill-mbstring": "To support UTF-8 if the Mbstring PHP extension is not enabled (^1.2)",
+ "thenetworg/oauth2-azure": "Needed for Microsoft XOAUTH2 authentication"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "PHPMailer\\PHPMailer\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "LGPL-2.1-only"
+ ],
+ "authors": [
+ {
+ "name": "Marcus Bointon",
+ "email": "phpmailer@synchromedia.co.uk"
+ },
+ {
+ "name": "Jim Jagielski",
+ "email": "jimjag@gmail.com"
+ },
+ {
+ "name": "Andy Prevost",
+ "email": "codeworxtech@users.sourceforge.net"
+ },
+ {
+ "name": "Brent R. Matzelle"
+ }
+ ],
+ "description": "PHPMailer is a full-featured email creation and transfer class for PHP",
+ "support": {
+ "issues": "https://github.com/PHPMailer/PHPMailer/issues",
+ "source": "https://github.com/PHPMailer/PHPMailer/tree/v7.0.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/Synchro",
+ "type": "github"
+ }
+ ],
+ "time": "2025-10-15T16:40:02+00:00"
+ },
+ {
+ "name": "phpstan/phpdoc-parser",
+ "version": "2.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpstan/phpdoc-parser.git",
+ "reference": "1e0cd5370df5dd2e556a36b9c62f62e555870495"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/1e0cd5370df5dd2e556a36b9c62f62e555870495",
+ "reference": "1e0cd5370df5dd2e556a36b9c62f62e555870495",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.4 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/annotations": "^2.0",
+ "nikic/php-parser": "^5.3.0",
+ "php-parallel-lint/php-parallel-lint": "^1.2",
+ "phpstan/extension-installer": "^1.0",
+ "phpstan/phpstan": "^2.0",
+ "phpstan/phpstan-phpunit": "^2.0",
+ "phpstan/phpstan-strict-rules": "^2.0",
+ "phpunit/phpunit": "^9.6",
+ "symfony/process": "^5.2"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "PHPStan\\PhpDocParser\\": [
+ "src/"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "PHPDoc parser with support for nullable, intersection and generic types",
+ "support": {
+ "issues": "https://github.com/phpstan/phpdoc-parser/issues",
+ "source": "https://github.com/phpstan/phpdoc-parser/tree/2.3.0"
+ },
+ "time": "2025-08-30T15:50:23+00:00"
+ },
+ {
+ "name": "setasign/fpdf",
+ "version": "1.8.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Setasign/FPDF.git",
+ "reference": "0838e0ee4925716fcbbc50ad9e1799b5edfae0a0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Setasign/FPDF/zipball/0838e0ee4925716fcbbc50ad9e1799b5edfae0a0",
+ "reference": "0838e0ee4925716fcbbc50ad9e1799b5edfae0a0",
+ "shasum": ""
+ },
+ "require": {
+ "ext-gd": "*",
+ "ext-zlib": "*"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "fpdf.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Olivier Plathey",
+ "email": "oliver@fpdf.org",
+ "homepage": "http://fpdf.org/"
+ }
+ ],
+ "description": "FPDF is a PHP class which allows to generate PDF files with pure PHP. F from FPDF stands for Free: you may use it for any kind of usage and modify it to suit your needs.",
+ "homepage": "http://www.fpdf.org",
+ "keywords": [
+ "fpdf",
+ "pdf"
+ ],
+ "support": {
+ "source": "https://github.com/Setasign/FPDF/tree/1.8.6"
+ },
+ "time": "2023-06-26T14:44:25+00:00"
+ },
+ {
+ "name": "setasign/fpdi",
+ "version": "v2.6.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Setasign/FPDI.git",
+ "reference": "4b53852fde2734ec6a07e458a085db627c60eada"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Setasign/FPDI/zipball/4b53852fde2734ec6a07e458a085db627c60eada",
+ "reference": "4b53852fde2734ec6a07e458a085db627c60eada",
+ "shasum": ""
+ },
+ "require": {
+ "ext-zlib": "*",
+ "php": "^7.1 || ^8.0"
+ },
+ "conflict": {
+ "setasign/tfpdf": "<1.31"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7",
+ "setasign/fpdf": "~1.8.6",
+ "setasign/tfpdf": "~1.33",
+ "squizlabs/php_codesniffer": "^3.5",
+ "tecnickcom/tcpdf": "^6.8"
+ },
+ "suggest": {
+ "setasign/fpdf": "FPDI will extend this class but as it is also possible to use TCPDF or tFPDF as an alternative. There's no fixed dependency configured."
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "setasign\\Fpdi\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jan Slabon",
+ "email": "jan.slabon@setasign.com",
+ "homepage": "https://www.setasign.com"
+ },
+ {
+ "name": "Maximilian Kresse",
+ "email": "maximilian.kresse@setasign.com",
+ "homepage": "https://www.setasign.com"
+ }
+ ],
+ "description": "FPDI is a collection of PHP classes facilitating developers to read pages from existing PDF documents and use them as templates in FPDF. Because it is also possible to use FPDI with TCPDF, there are no fixed dependencies defined. Please see suggestions for packages which evaluates the dependencies automatically.",
+ "homepage": "https://www.setasign.com/fpdi",
+ "keywords": [
+ "fpdf",
+ "fpdi",
+ "pdf"
+ ],
+ "support": {
+ "issues": "https://github.com/Setasign/FPDI/issues",
+ "source": "https://github.com/Setasign/FPDI/tree/v2.6.4"
+ },
+ "funding": [
+ {
+ "url": "https://tidelift.com/funding/github/packagist/setasign/fpdi",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2025-08-05T09:57:14+00:00"
+ },
+ {
+ "name": "smalot/pdfparser",
+ "version": "v2.12.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/smalot/pdfparser.git",
+ "reference": "98d31ba34ef5b5a98897ef4b6c3925d502ea53b1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/smalot/pdfparser/zipball/98d31ba34ef5b5a98897ef4b6c3925d502ea53b1",
+ "reference": "98d31ba34ef5b5a98897ef4b6c3925d502ea53b1",
+ "shasum": ""
+ },
+ "require": {
+ "ext-iconv": "*",
+ "ext-zlib": "*",
+ "php": ">=7.1",
+ "symfony/polyfill-mbstring": "^1.18"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "Smalot\\PdfParser\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "LGPL-3.0"
+ ],
+ "authors": [
+ {
+ "name": "Sebastien MALOT",
+ "email": "sebastien@malot.fr"
+ }
+ ],
+ "description": "Pdf parser library. Can read and extract information from pdf file.",
+ "homepage": "https://www.pdfparser.org",
+ "keywords": [
+ "extract",
+ "parse",
+ "parser",
+ "pdf",
+ "text"
+ ],
+ "support": {
+ "issues": "https://github.com/smalot/pdfparser/issues",
+ "source": "https://github.com/smalot/pdfparser/tree/v2.12.1"
+ },
+ "time": "2025-07-31T06:19:56+00:00"
+ },
+ {
+ "name": "symfony/deprecation-contracts",
+ "version": "v3.6.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/deprecation-contracts.git",
+ "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62",
+ "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1"
+ },
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "url": "https://github.com/symfony/contracts",
+ "name": "symfony/contracts"
+ },
+ "branch-alias": {
+ "dev-main": "3.6-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "function.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "A generic function and convention to trigger deprecation notices",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-09-25T14:21:43+00:00"
+ },
+ {
+ "name": "symfony/finder",
+ "version": "v7.3.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/finder.git",
+ "reference": "9f696d2f1e340484b4683f7853b273abff94421f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/9f696d2f1e340484b4683f7853b273abff94421f",
+ "reference": "9f696d2f1e340484b4683f7853b273abff94421f",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.2"
+ },
+ "require-dev": {
+ "symfony/filesystem": "^6.4|^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Finder\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Finds files and directories via an intuitive fluent interface",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/finder/tree/v7.3.5"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2025-10-15T18:45:57+00:00"
+ },
+ {
+ "name": "symfony/polyfill-ctype",
+ "version": "v1.33.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-ctype.git",
+ "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638",
+ "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2"
+ },
+ "provide": {
+ "ext-ctype": "*"
+ },
+ "suggest": {
+ "ext-ctype": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "url": "https://github.com/symfony/polyfill",
+ "name": "symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Ctype\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Gert de Pagter",
+ "email": "BackEndTea@gmail.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for ctype functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "ctype",
+ "polyfill",
+ "portable"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.33.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-09-09T11:45:10+00:00"
+ },
+ {
+ "name": "symfony/polyfill-mbstring",
+ "version": "v1.33.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
+ "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493",
+ "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493",
+ "shasum": ""
+ },
+ "require": {
+ "ext-iconv": "*",
+ "php": ">=7.2"
+ },
+ "provide": {
+ "ext-mbstring": "*"
+ },
+ "suggest": {
+ "ext-mbstring": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "url": "https://github.com/symfony/polyfill",
+ "name": "symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Mbstring\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for the Mbstring extension",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "mbstring",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.33.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-12-23T08:48:59+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php83",
+ "version": "v1.33.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php83.git",
+ "reference": "17f6f9a6b1735c0f163024d959f700cfbc5155e5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/17f6f9a6b1735c0f163024d959f700cfbc5155e5",
+ "reference": "17f6f9a6b1735c0f163024d959f700cfbc5155e5",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2"
+ },
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "url": "https://github.com/symfony/polyfill",
+ "name": "symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Php83\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php83/tree/v1.33.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2025-07-08T02:45:35+00:00"
+ },
+ {
+ "name": "symfony/process",
+ "version": "v7.3.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/process.git",
+ "reference": "f24f8f316367b30810810d4eb30c543d7003ff3b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/process/zipball/f24f8f316367b30810810d4eb30c543d7003ff3b",
+ "reference": "f24f8f316367b30810810d4eb30c543d7003ff3b",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.2"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Process\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Executes commands in sub-processes",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/process/tree/v7.3.4"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2025-09-11T10:12:26+00:00"
+ },
+ {
+ "name": "symfony/translation-contracts",
+ "version": "v3.6.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/translation-contracts.git",
+ "reference": "65a8bc82080447fae78373aa10f8d13b38338977"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/65a8bc82080447fae78373aa10f8d13b38338977",
+ "reference": "65a8bc82080447fae78373aa10f8d13b38338977",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1"
+ },
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "url": "https://github.com/symfony/contracts",
+ "name": "symfony/contracts"
+ },
+ "branch-alias": {
+ "dev-main": "3.6-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\Translation\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Test/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Generic abstractions related to translation",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/translation-contracts/tree/v3.6.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2025-07-15T13:41:35+00:00"
+ },
+ {
+ "name": "symfony/validator",
+ "version": "v7.3.7",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/validator.git",
+ "reference": "8290a095497c3fe5046db21888d1f75b54ddf39d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/validator/zipball/8290a095497c3fe5046db21888d1f75b54ddf39d",
+ "reference": "8290a095497c3fe5046db21888d1f75b54ddf39d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.2",
+ "symfony/deprecation-contracts": "^2.5|^3",
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/polyfill-php83": "^1.27",
+ "symfony/translation-contracts": "^2.5|^3"
+ },
+ "conflict": {
+ "doctrine/lexer": "<1.1",
+ "symfony/dependency-injection": "<6.4",
+ "symfony/doctrine-bridge": "<7.0",
+ "symfony/expression-language": "<6.4",
+ "symfony/http-kernel": "<6.4",
+ "symfony/intl": "<6.4",
+ "symfony/property-info": "<6.4",
+ "symfony/translation": "<6.4.3|>=7.0,<7.0.3",
+ "symfony/yaml": "<6.4"
+ },
+ "require-dev": {
+ "egulias/email-validator": "^2.1.10|^3|^4",
+ "symfony/cache": "^6.4|^7.0",
+ "symfony/config": "^6.4|^7.0",
+ "symfony/console": "^6.4|^7.0",
+ "symfony/dependency-injection": "^6.4|^7.0",
+ "symfony/expression-language": "^6.4|^7.0",
+ "symfony/finder": "^6.4|^7.0",
+ "symfony/http-client": "^6.4|^7.0",
+ "symfony/http-foundation": "^6.4|^7.0",
+ "symfony/http-kernel": "^6.4|^7.0",
+ "symfony/intl": "^6.4|^7.0",
+ "symfony/mime": "^6.4|^7.0",
+ "symfony/property-access": "^6.4|^7.0",
+ "symfony/property-info": "^6.4|^7.0",
+ "symfony/string": "^6.4|^7.0",
+ "symfony/translation": "^6.4.3|^7.0.3",
+ "symfony/type-info": "^7.1.8",
+ "symfony/yaml": "^6.4|^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Validator\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/",
+ "/Resources/bin/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides tools to validate values",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/validator/tree/v7.3.7"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2025-11-08T16:29:29+00:00"
+ },
+ {
+ "name": "symfony/yaml",
+ "version": "v7.3.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/yaml.git",
+ "reference": "90208e2fc6f68f613eae7ca25a2458a931b1bacc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/90208e2fc6f68f613eae7ca25a2458a931b1bacc",
+ "reference": "90208e2fc6f68f613eae7ca25a2458a931b1bacc",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.2",
+ "symfony/deprecation-contracts": "^2.5|^3.0",
+ "symfony/polyfill-ctype": "^1.8"
+ },
+ "conflict": {
+ "symfony/console": "<6.4"
+ },
+ "require-dev": {
+ "symfony/console": "^6.4|^7.0"
+ },
+ "bin": [
+ "Resources/bin/yaml-lint"
+ ],
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Yaml\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Loads and dumps YAML files",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/yaml/tree/v7.3.5"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2025-09-27T09:00:46+00:00"
+ }
+ ],
+ "packages-dev": [],
+ "aliases": [],
+ "minimum-stability": "stable",
+ "stability-flags": [],
+ "prefer-stable": false,
+ "prefer-lowest": false,
+ "platform": [],
+ "platform-dev": [],
+ "plugin-api-version": "2.3.0"
+}
diff --git a/html/.cvsignore b/html/.cvsignore
deleted file mode 100755
index 0d3c38dd8..000000000
--- a/html/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*.log
-ajax
diff --git a/html/ajax.php b/html/ajax.php
index a58f7a40b..fdc5e582c 100644
--- a/html/ajax.php
+++ b/html/ajax.php
@@ -36,6 +36,12 @@ $cn=Dossier::connect();
$g_parameter=new Noalyss_Parameter_Folder($cn);
$g_user=new Noalyss_user($cn);
$g_user->check(true);
+/**
+ * check if 2FA is completed
+ */
+if ( ! $g_user->is_double_identified()) {
+ exit();
+}
IDate::set_firstDate($g_user->get_first_week_day());
ITva_Popup::set_vat_code($g_user->get_vat_code_preference());
diff --git a/html/ajax_misc.php b/html/ajax_misc.php
index ce27ce175..b926f4ccb 100644
--- a/html/ajax_misc.php
+++ b/html/ajax_misc.php
@@ -45,6 +45,7 @@ $http=new HttpInput();
try {
$op= $http->request("op");
if ($op =='check_vatnumber') session_write_close();
+ if ($op =='search_peppol') session_write_close();
} catch (\Exception $e) {
exit();
@@ -96,7 +97,12 @@ else
$g_user = new Noalyss_user($cn);
$g_user->check(true);
}
-
+/**
+ * check if 2FA is completed
+ */
+if ( ! $g_user->is_double_identified()) {
+ exit();
+}
IDate::set_firstDate($g_user->get_first_week_day());
ITva_Popup::set_vat_code($g_user->get_vat_code_preference());
@@ -365,6 +371,16 @@ $path = array(
,"category_card_definition"=>"ajax_category_card_definition"
// activate plugin for a profile
,'activate_plugin'=>'ajax_activate_plugin'
+ // set the operation paid or unpaid
+ , 'payment_status'=>'ajax_payment_status'
+ // email setting
+ , 'email_setting'=>'ajax_email_setting'
+ // check iban number
+ , 'check_ibannumber'=>'ajax_check_ibannumber'
+ // related to peppol : search
+ ,'search_peppol'=>'ajax_search_peppol'
+ // find and select a VATEX code : VAT Exemption code mandatory for PEPPOL
+ ,'search_vatex'=>'ajax_search_vatex'
) ;
if (array_key_exists($op, $path)) {
@@ -582,7 +598,7 @@ EOF;
$Res = $cn->exec_sql("select * from v_tva_rate
where
- tva_purchase <> '#' and tva_sale <> '#'
+ tva_purchase <> '#' or tva_sale <> '#'
order by tva_id asc");
}
$Max = Database::num_row($Res);
diff --git a/html/compute.php b/html/compute.php
index ccbadc33a..0a2fbc2d4 100644
--- a/html/compute.php
+++ b/html/compute.php
@@ -61,6 +61,12 @@ $q=noalyss_str_replace(",",".",$q);
$cn=Dossier::connect();
$User=new Noalyss_user($cn);
$User->Check();
+/**
+ * check if 2FA is completed
+ */
+if ( ! $User->is_double_identified()) {
+ exit();
+}
$User->check_dossier(Dossier::id());
// Retrieve the rate of vat, it $t == -1 it means no VAT
diff --git a/html/css/calendar-blue.css b/html/css/calendar-blue.css
index 85172b05e..bc809b59b 100644
--- a/html/css/calendar-blue.css
+++ b/html/css/calendar-blue.css
@@ -1,6 +1,6 @@
/* The main calendar widget. DIV containing a table. */
-div.calendar { position: relative; z-index:13; }
+div.calendar { position: relative; z-index:400; }
.calendar, .calendar table {
border: 1px solid #556;
diff --git a/html/css/font/Montserrat-Regular.ttf b/html/css/font/Montserrat-Regular.ttf
new file mode 100644
index 000000000..48ba65ed3
Binary files /dev/null and b/html/css/font/Montserrat-Regular.ttf differ
diff --git a/html/css/font/Montserrat-Regular.woff b/html/css/font/Montserrat-Regular.woff
new file mode 100644
index 000000000..2a990e5d8
Binary files /dev/null and b/html/css/font/Montserrat-Regular.woff differ
diff --git a/html/css/font/Roboto-Light.ttf b/html/css/font/Roboto-Light.ttf
new file mode 100644
index 000000000..6fcd5f964
Binary files /dev/null and b/html/css/font/Roboto-Light.ttf differ
diff --git a/html/css/font/Roboto-Regular.ttf b/html/css/font/Roboto-Regular.ttf
new file mode 100644
index 000000000..7e3bb2f8c
Binary files /dev/null and b/html/css/font/Roboto-Regular.ttf differ
diff --git a/html/css/font/Roboto-Regular.woff2 b/html/css/font/Roboto-Regular.woff2
new file mode 100644
index 000000000..79a39bf57
Binary files /dev/null and b/html/css/font/Roboto-Regular.woff2 differ
diff --git a/html/css/style-classic7.css b/html/css/style-classic7.css
index 59f2f1ab4..e1a3dba2c 100644
--- a/html/css/style-classic7.css
+++ b/html/css/style-classic7.css
@@ -1,7 +1,43 @@
/* <\/scr"+"ipt>");
- $BK("__ie_onload").onreadystatechange = function() {
- if (this.readyState == "complete"){bkLib.domLoaded();}
- };
- }
- window.onload = bkLib.domLoaded;
- }
-};
-
-function $BK(elm) {
- if(typeof(elm) == "string") {
- elm = document.getElementById(elm);
- }
- return (elm && !elm.appendTo) ? bkExtend(elm,bkElement.prototype) : elm;
-}
-
-var bkEvent = {
- addEvent : function(evType, evFunc) {
- if(evFunc) {
- this.eventList = this.eventList || {};
- this.eventList[evType] = this.eventList[evType] || [];
- this.eventList[evType].push(evFunc);
- }
- return this;
- },
- fireEvent : function() {
- var args = bkLib.toArray(arguments), evType = args.shift();
- if(this.eventList && this.eventList[evType]) {
- for(var i=0;i');
- }
- this.instanceDoc = document.defaultView;
- this.elm.addEvent('mousedown',this.selected.closureListener(this)).addEvent('keypress',this.keyDown.closureListener(this)).addEvent('focus',this.selected.closure(this)).addEvent('blur',this.blur.closure(this)).addEvent('keyup',this.selected.closure(this));
- this.ne.fireEvent('add',this);
- },
-
- remove : function() {
- this.saveContent();
- if(this.copyElm || this.options.hasPanel) {
- this.editorContain.remove();
- this.e.setStyle({'display' : 'block'});
- this.ne.removePanel();
- }
- this.disable();
- this.ne.fireEvent('remove',this);
- },
-
- disable : function() {
- this.elm.setAttribute('contentEditable','false');
- },
-
- getSel : function() {
- return (window.getSelection) ? window.getSelection() : document.selection;
- },
-
- getRng : function() {
- var s = this.getSel();
- if(!s || s.rangeCount === 0) { return; }
- return (s.rangeCount > 0) ? s.getRangeAt(0) : s.createRange();
- },
-
- selRng : function(rng,s) {
- if(window.getSelection) {
- s.removeAllRanges();
- s.addRange(rng);
- } else {
- rng.select();
- }
- },
-
- selElm : function() {
- var r = this.getRng();
- if(!r) { return; }
- if(r.startContainer) {
- var contain = r.startContainer;
- if(r.cloneContents().childNodes.length == 1) {
- for(var i=0;i'+((css) ? '' : '')+''+this.initialContent+'