diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 124d96a..bd57a20 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -12,13 +12,26 @@ jobs: release: name: Release pushed tag runs-on: ubuntu-22.04 + env: + TAG: ${{ github.ref_name }} steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + path: autoverifactu + + - name: Package + run: | + zip -r "autoverifactu-$TAG.zip" autoverifactu \ + -x 'autoverifactu/.*' \ + -x 'autoverifactu/composer.*' + - name: Create release env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - TAG: ${{ github.ref_name }} run: | gh release create "$TAG" \ --repo="$GITHUB_REPOSITORY" \ --title="$TAG" \ - --generate-notes + --generate-notes \ + "autoverifactu-$TAG.zip#Auto-Veri*Factu $TAG" diff --git a/README.md b/README.md index f54e6f0..3274065 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Auto Veri\*Factu +# Auto-Veri\*Factu [![Package Versi贸n](https://img.shields.io/github/v/release/codeccoop/autoverifactu)](composer.json) [![Versi贸n de PHP](https://img.shields.io/badge/php-%3E%3D8.2-8892BF)](composer.json) @@ -6,7 +6,7 @@ > Este proyecto se encuentra en fase de pruebas, por lo que no se recomienda su uso en un entorno productivo 馃檧. Por el mismo motivo, el proyecto est谩 abierto a contruibuciones y aportaciones, que ser谩n gratamente bienvenidas 馃. -Auto Veri\*Factu es un m贸dulo de Dolibarr sencillo que permite generar registros de facturaci贸n seg煤n el sistema Veri\*Factu. +**Auto Veri\*Factu** es un m贸dulo de Dolibarr sencillo que permite generar registros de facturaci贸n seg煤n el sistema Veri\*Factu. Una vez instalado y activado, el m贸dulo bloquea la edici贸n de facturas validadas. @@ -20,19 +20,19 @@ Por 煤ltimo, el m贸dulo se encarga de a帽adir el c贸digo QR correspondiente a la ## Declaraci贸n responsable -Este m贸dulo se proporciona sin una declaraci贸n responsable firmada por C貌dec. El c贸digo, sujeto a una licencia GPL, est谩 abierto a reutilizaci贸n, c贸pia y modificaci贸n por parte del p煤blico, por lo que C贸dec no puede hacerse responsable del uso que otros hagan del mismo. +Este m贸dulo se proporciona sin una declaraci贸n responsable firmada por C貌dec. El c贸digo, sujeto a una [licencia GPL](https://github.com/codeccoop/autoverifactu/blob/main/LICENSE), est谩 abierto a reutilizaci贸n, c贸pia y modificaci贸n por parte del p煤blico, por lo que C贸dec no puede hacerse responsable del uso que otros hagan del mismo. -El requerimiento de la declaraci贸n responsable que emana del [Real Decreto 1007/2023](https://www.boe.es/buscar/act.php?id=BOE-A-2023-24840) atenta contra los principios del c贸digo libre y abierto: El principio de descargo de responsabilidad del autor es imprescindible para la libre circulaci贸n del c贸digo bajo licencias abiertas. +El requerimiento de la declaraci贸n responsable que emana del [Real Decreto 1007/2023](https://www.boe.es/buscar/act.php?id=BOE-A-2023-24840) atenta contra los principios del c贸digo libre y abierto: El principio de descargo de responsabilidad del autor es imprescindible para la libre circulaci贸n del c贸digo bajo licencias abiertas. La misma licencia bajo la que se distribuye Dolibarr recoge lo siguiente: _芦This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE禄_. -La no observaci贸n del principio de descargo de responsabilidad promueve medidas que limiten los derechos y libertades fundamentales del movimiento del codigo abierto: la libertad de uso, distribuci贸n, copia y modificaci贸n. +La no observaci贸n del principio de descargo de responsabilidad incentiva al propietario intelectual del c贸digo a tomar medidas que limiten los derechos y libertades fundamentales del movimiento del codigo abierto: la libertad de uso, distribuci贸n, copia y modificaci贸n. -Ante esta situaci贸n, lo que propone este m贸dulo es la _auto declaraci贸n responsable_, un mecanismo incluido en el propio m贸dulo a trav茅s del cual el titular de la instancia Dolibarr en la que este se instale puede firmar su propia declaraci贸n responsable. La libertad de copiar y modificar el programa conlleva la responsabilidad sobre el uso que de 茅l se haga. +Ante esta situaci贸n, lo que propone este m贸dulo es la _auto declaraci贸n responsable_, un mecanismo incluido en el propio m贸dulo a trav茅s del cual el titular de la instancia Dolibarr en la que este se instale puede firmar su propia declaraci贸n responsable. De esta forma, se consigue la homologaci贸n del m貌dulo como SIF segun lo expuesto en la normativa Veri*Factu, y el descargo de responsabilidad desde el autor al usuario y/o proveedor. **La libertad de copiar y modificar el programa conlleva la responsabilidad sobre el uso que de 茅l se haga**. -Auto-Veri\*Factu solo podr谩 activarse previa generaci贸n de la auto declaraci贸n responsable. +> Auto-Veri\*Factu solo podr谩 activarse previa generaci贸n de la auto declaraci贸n responsable. ## Instalaci贸n y activaci贸n -Puedes descargarte la 煤ltima versi贸n del c贸digo desde el listado de versiones disponibles ([GitHub 馃惐](https://github.com/codeccoop/autoverifactu/tags) o [GitLab 馃](https://gitlab.com/codeccoop/dolibarr/autoverifactu/-/releases)). +Puedes descargarte la 煤ltima versi贸n del c贸digo desde el listado de versiones disponibles en [GitHub 馃惐](https://github.com/codeccoop/autoverifactu/releases). Una vez obtenido el paquete zip con el c贸digo, deber谩s subirlo a tu instancia de Dolibarr desde el men煤 `Inicio > Configuraci贸n > M贸dulos > Instalaci贸n de m贸dulos externos`. @@ -41,9 +41,19 @@ Una vez instalado, falta su activaci贸n. Para activar el m贸dulo Auto-Veri\*Fact 1. Tener informado una **Raz贸n Social** y un **NIF** v谩lido en la configuraci贸n de tu compa帽铆a. 2. Haber subido el fichero PKCS#12 con el certificato eletr贸nico de la compa帽铆a/persona f铆sica y su contrase帽a a trav茅s del formulario de configuraci贸n del m贸dulo. 3. Haber generado una versi贸n auto firmada de la declaraci贸n responsable usando la plantill que se ofrece en el panel de adminsitraci贸n del m贸dulo. +4. En el panel de configuraci贸n del m贸dulo, haber seleccionado el tipo de impuesto al que est谩 sometida tu actividad econ贸mica y el r茅gimen fiscal. +5. Disponer del m贸dulo **Archivos Inalterable** activado y de la opci贸n de _"Fuerza la fecha de factura a la fecha de valicaci贸n"_ de la configuraci贸n del m贸dulo de facturas marcada (autom谩tico). Una vez cumplidos los requisitos, podr谩s activar Auto-Veri\*Factu. **Ten en cuenta que una vez activado, ciertas funciones de Dolibarr quedaran bloqueadas, como son la edici贸n de facturas validadas o la actualizaci贸n de tus datos societarios**. +## Desarrollo + +Des de el panel de configuraci贸n de **Auto-Veri*Factu** se puede activar el **modo de pruebas**. En este modo, los registros de facturaci贸n seran enviados al entorno de pruebas de la AEAT sin generar ning煤n tipo de obligaci贸n fiscal ante hacienda. + +El m贸dulo, testeado en la versi贸n 20.0 de Dolibarr, se distribuye sin dependencias. Sin embargo, se requiere de [composer](https://getcomposer.org/) para instalar los paquetes necesarios para preparar el entorno de desarrollo. En concreto, se hace uso de [PHP CodeSniffers](https://github.com/PHPCSStandards/PHP_CodeSniffer/) como formateador y validador de c贸digo. + +> FYI: En C貌dec desarrollamos con Docker haciendo uso de las imagenes [Dolibarr](https://hub.docker.com/r/dolibarr/dolibarr) y [MariaDB](https://hub.docker.com/_/mariadb). + ## Hoja de ruta 1. Soporte para el m贸dulo _Multi Company_. Por ahora, **Auto Veri\*Factu no permite su uso en entornos multi compa帽铆a**. diff --git a/composer.json b/composer.json index f1868eb..4eb4048 100755 --- a/composer.json +++ b/composer.json @@ -1,10 +1,11 @@ { "name": "codeccoop/auto-verifactu-dolibarr", - "version": "0.0.6", + "version": "0.0.7", "require": { "php": ">=8.0" }, "require-dev": { - "caprel/dolibarr-stubs": "^18.0" + "caprel/dolibarr-stubs": "^18.0", + "squizlabs/php_codesniffer": "^3.13" } } diff --git a/composer.lock b/composer.lock index ca181ba..e518333 100755 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "9a3e71a409c51c37780f06f8e652588d", + "content-hash": "e07207189027c776f16ff1e06816e456", "packages": [], "packages-dev": [ { @@ -31,6 +31,85 @@ "source": "https://github.com/rycks/dolibarr-stubs/tree/v18.0" }, "time": "2023-10-20T13:03:23+00:00" + }, + { + "name": "squizlabs/php_codesniffer", + "version": "3.13.5", + "source": { + "type": "git", + "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", + "reference": "0ca86845ce43291e8f5692c7356fccf3bcf02bf4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/0ca86845ce43291e8f5692c7356fccf3bcf02bf4", + "reference": "0ca86845ce43291e8f5692c7356fccf3bcf02bf4", + "shasum": "" + }, + "require": { + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4" + }, + "bin": [ + "bin/phpcbf", + "bin/phpcs" + ], + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Greg Sherwood", + "role": "Former lead" + }, + { + "name": "Juliette Reinders Folmer", + "role": "Current lead" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors" + } + ], + "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer", + "keywords": [ + "phpcs", + "standards", + "static analysis" + ], + "support": { + "issues": "https://github.com/PHPCSStandards/PHP_CodeSniffer/issues", + "security": "https://github.com/PHPCSStandards/PHP_CodeSniffer/security/policy", + "source": "https://github.com/PHPCSStandards/PHP_CodeSniffer", + "wiki": "https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki" + }, + "funding": [ + { + "url": "https://github.com/PHPCSStandards", + "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" + }, + { + "url": "https://thanks.dev/u/gh/phpcsstandards", + "type": "thanks_dev" + } + ], + "time": "2025-11-04T16:30:35+00:00" } ], "aliases": [], @@ -38,7 +117,9 @@ "stability-flags": [], "prefer-stable": false, "prefer-lowest": false, - "platform": [], + "platform": { + "php": ">=8.0" + }, "platform-dev": [], "plugin-api-version": "2.3.0" } diff --git a/core/modules/modAutoverifactu.class.php b/core/modules/modAutoverifactu.class.php index 95b0184..ce8164f 100644 --- a/core/modules/modAutoverifactu.class.php +++ b/core/modules/modAutoverifactu.class.php @@ -78,7 +78,7 @@ public function __construct($db) $this->editor_squarred_logo = 'logo-codec.png@autoverifactu'; // Must be image filename into the module/img directory followed with @modulename. Example: 'myimage.png@autoverifactu' // Possible values for version are: 'development', 'experimental', 'dolibarr', 'dolibarr_deprecated', 'experimental_deprecated' or a version string like 'x.y.z' - $this->version = '0.0.6'; + $this->version = '0.0.7'; // Url to the file with your last numberversion of this module //$this->url_last_version = 'http://www.example.com/versionmodule.txt'; @@ -250,7 +250,7 @@ public function __construct($db) */ public function init($options = '') { - global $db, $conf, $langs; + global $db; // , $conf, $langs; dolibarr_set_const($db, 'FAC_FORCE_DATE_VALIDATION', '1', 'chaine', 0, '', 0); diff --git a/core/triggers/interface_10_modAutoverifactu_AutoverifactuFreezeInvoices.class.php b/core/triggers/interface_10_modAutoverifactu_AutoverifactuFreezeInvoices.class.php index 3c42c84..198aa5e 100644 --- a/core/triggers/interface_10_modAutoverifactu_AutoverifactuFreezeInvoices.class.php +++ b/core/triggers/interface_10_modAutoverifactu_AutoverifactuFreezeInvoices.class.php @@ -33,6 +33,7 @@ require_once DOL_DOCUMENT_ROOT . '/core/triggers/dolibarrtriggers.class.php'; require_once DOL_DOCUMENT_ROOT . '/compta/facture/class/facture.class.php'; +require_once dirname(__DIR__, 2) . '/lib/autoverifactu.lib.php'; require_once dirname(__DIR__, 2) . '/lib/verifactu.lib.php'; require_once dirname(__DIR__, 2) . '/lib/validation.lib.php'; @@ -70,7 +71,7 @@ public function __construct($db) */ public function runTrigger($action, $object, $user, $langs, $conf) { - if (!autoverifactuEnabled()) { + if (!autoverifactuEnabled() && $action !== 'USER_LOGOUT') { return 0; } @@ -162,6 +163,9 @@ public function runTrigger($action, $object, $user, $langs, $conf) return -1; } + break; + case 'USER_LOGOUT': + autoverifactu_set_const('AUTOVERIFACTU_DISMISSED_NOTICES', ''); break; } diff --git a/lib/validation.lib.php b/lib/validation.lib.php index a1aaf92..975fe9c 100644 --- a/lib/validation.lib.php +++ b/lib/validation.lib.php @@ -349,7 +349,7 @@ function autoverifactuEnabled() $enabled = getDolGlobalInt('AUTOVERIFACTU_ENABLED'); if (!$check && $enabled) { - dolibarr_set_const('AUTOVERIFACTU_ENABLED', false); + autoverifactu_set_const('AUTOVERIFACTU_ENABLED', false); } return $check && $enabled;