Facture PDF/A

A noter qu’un certificat autosigné n’a aucune valeur légale. Il faut un certificat d’une autorité qui a contrôlé l’existence de votre structure etc…
Pour avoir une valeur fiscale, la facture doit être signée avec un certificat RGS**. Je ne fait pas car trop cher et très très lourd en implémentation. Ou alors on utilise une API.
@+

@philazerty

Merci pour le code, je vais essayer de l’intégrer.

Concernant la certification, dans mon cas, ca n’a pas de rapport avec le fisc, mais c’est mon client qui demande à ce que les factures dématérialisées soient dorénavant non modifiable (d’où le PDF/A) et signée numériquement. Afin de valider l’auteur j’imagine… Ils ont déjà du avoir des problèmes… :unsure:

Pour le répertoire htdocs je ne savait pas. Merci de l’info.

Alors, j’ai testé mais… Ca ne fonctionne pas. On ne le vois pas tout de suite, parce que le PDF est généré et signé, mais pas avec le certificat. Lorsque j’ouvre avec adobe et regarde le certificat, celui ci plante.

J’ai eu ce problème quand je faisais mes testes et que le chemin vers le certificat était mauvais.

J’ai donc testé en pointant vers le certificat en absolu, mais même problème… Donc il y a aussi un souci avec le fait d’écrire la fonction dans le modèle de facture.

Finalement, j’ai essayé de réécrire dans pdf.lib.php avec l’accès par DOL_DATA_ROOT. mais même chose, ca ne marche pas.

Donc la seule solution que j’ai trouvé et qui fonctionne c’est d’écrire dans pdf.lib.php avec l’accès $cert='file://../../../documents/mycompany/certificates/tcpdf.crt';

@philazerty
Es-tu certain de pouvoir lire le certificat du pdf généré ???

@mdallosto
Tu as raison, de cette mmanièrele certificat n’est pas bien incorporé. Je vais gratter.
Le DOL_DATA_ROOT fonctionne sinon. car dans mon code j’ai un if fileexist pour tester la présence du certificat. C’est plus un pb d’endroit je pense.
@+

Ben… j’ai envie de dire oui et non :wink:

Il voit que la variable à bien été rempli de quelque chose mais ce n’est pas exploitable. Pour moi, il rempli la variable avec le contenu du fichier, alors que c’est le fichier lui même qu’il faut mettre dedans d’ou le « file:// ».
J’ai essayer d’y accéder de cette façon depuis pdf.lib et ca fait pareil.

Je ne connais pas php mais j’ai l’impression que la bonne méthode d’y accéder et d’utiliser « file:// » (en tout cas il n’y a que comme ça que ça fonctionne). J’ai essayer de l’utiliser avec DOL_DATA_ROOT devant / derrière / sur les coté :tongue: mais j’ai pas réussi… Ce n’est peut être pas possible… :dry:

C’est bon, j’ai trouvé !

Il faut utiliser la fonction file_get_contents()

comme ceci:

$cert=file_get_contents(DOL_DATA_ROOT."/mycompany/certificates/tcpdf.crt");

Et du coup, ca fonctionne aussi dans le model de facture :woohoo:

2 « J'aime »

Aurais tu le temps de le documenter sur le wiki ?
Cela peut intéresser d’autres personnes je pense :wink:

@mdallosto
Bon bien tu as posté avant moi ! Bravo et merci pour ta contribution. Je vais parfaire mon bout de code avec les tests appropriés.
@jtraulle
Pas de soucis il me faut juste trouver le temps
@+

En vrai je réfléchis à savoir si j’utilise un certificat par user ? Après tout chacun signe ses docs. Ça permettrait de pouvoir révoquer un signature.
@+

@phil c’est même indispensable
un certificat utilisé à des fins de signature ne peut être que nominatif (enfin, si émis par un tiers de confiance…)

@arre
Je vais prévoir les 2 options si j’y arrive
@+

@phil comment ça les 2 options ?
une signature peut pas ne pas être nominative (donc nécessairement rattachée à un user dolibarr)

@philazerty

Oui ! , très bonne idée :happy:

Je me posais la question… Le dossier de l’utilisateur (/documents/users/x) est il aussi protégé que « mycompany » ?

Dans ce cas on pourrais charger le certificat depuis la page utilisateur (fichier joints) et aller le chercher facilement depuis le modèle de facture :happy:

@mdallosto
Si j’y arrive, les certificats « nominatifs » seront dans les dossiers des utilisateurs mais pas accessibles via « fichiers joints » de la fiche utilisateur car ils pourraient être récupérés par des utilisateurs indélicats. Dans l’idée c’est l’admin qui les posera là où il faut.
@arre
L’idée et de pouvoir signer des factures ou autre sans pour autant avoir un certificat par utilisateur qui peut coûter cher. Ensuite c’est la responsabilité du chef d’entreprise.

Pour information un « vrai » certificat coûte moins de 50 € par an mais il n’est pas RGS**
@+

et un « vrai de vrai » coûte environ 100€ par an (selon la durée de validité -> tarif dégressif)

petit astuce:
vous avez peut être droit à un(des) certificats avec votre banque (ou gratuitement ou à tarif très préférentiel) : renseignez vous ! :happy:
(mais n’allez pas dans votre agence pour demander un certificat electronique : il n’y connaissent rien et ne savent pas ce que c’est la plus part du temps lol -> regardez les offres sur leur site internet)

@philazerty

Les utilisateurs peuvent accéder au dossiers des autres utilisateurs ?!
Je pensais qu’il n’y avait que l’administrateur… :confused:

@arre
Si si un vrai de vrai : 50 €ht (classique) => Pub ! C’est le TBS X509 Sign&Login
Autosigné = aucune valeur
Standard émis d’une autorité = valeur légale (l’option retenue pour nous)
RGS** = valeur fiscale => nécessite de lourde infra pour avoir valeur.car c’est un cachet serveur. Le serveur lui-même doit répondre a un niveau de sécurité.
@+

@phil c’est bien des RGS** dont je parlais
et coté utilisateur, c’est pas si compliqué que ça à mettre en place (mais oui, administrativement, l’obtention est longue et chiante … et il faut que le certif te soit remis en main propre avec vérification d’identité…)
nb : si le tiers de confiance n’a pas lui même de « tiers de confiance » local permettant de vérifier l’identité (ton banquier par exemple) -> ça se fait au greffe du tribunal.

Pour du RGS** on ne peut pas le mettre en place avec Dolibarr. Il faut utiliser une API et un prestataire certifié etc… Je ne travaillerai pas dans ce sens. Sinon uil faut un token (clé ou carte) mais plus de mode automatique
@+

et voui… c’est tout le problème ^^
à moins de mouliner en local.

Mais j’en ai discuté avec Jtraulle et je partage son point de vue:
le niveau du certificat n’a pas à être si élevé que ça, à partir du moment où l’émetteur et le destinataire ont « confiance » mutuellement (avec par exemple, remise de la clé publique en main propre, ou avec quelque moyen d’échange sécurisé que ce soit)

On arrivera surement à de tels systèmes/services quand les politiques se seront rendu compte de leur connerie … (ou quand les privés dirons « merde » vu le coût et les contraintes des RGS**)

1 « J'aime »