Facture PDF/A

ça, j’en doute grandement ; c’est tout bénéf pour eux … un revenu facile avec des contraintes relativement limité

jtraulle écrit:

ok, pas pour l’administration, mais entre entreprises … rien ne l’empêche. (sauf si une loi l’interdit \o/)

je viens de faire un test, un fichier déposé dans le dossier certificate de l’utilisateur n’est pas visible via dolibarr
je termine encore 2/3 trucs mais cela donne ca

				$cert=file_get_contents(DOL_DATA_ROOT."/users/".$user->id."/certificates/signature.crt");
				// si l'utilisateur n'a pas de certificat, on prend le certificat
				if (!$cert)
					$cert=file_get_contents(DOL_DATA_ROOT."/mycompany/certificates/signature.crt");
				if ($cert) {
					$info = array(
						'Name' => $this->emetteur->name, 
						'Location' => getCountry($this->emetteur->country_code, 0),
						'Reason' => 'FACTURE',
						'ContactInfo' => $this->emetteur->email
					);
					$pdf->setSignature($cert, $cert, $this->emetteur->name, '', 2, $info);
				}

une fois validé, je pousserai mon évolution dans le core

1 « J'aime »

@defrance

Nickel !

C’est exactement ce que j’essayais de faire mais je ne trouvais pas comment récupérer l’user id pour créer le chemin :tongue:

Heu… Juste un détail, perso j’aurais juste testé la présence du certificat et c’est tout…
Si l’utilisateur n’a pas de certificat on signe pas… Non ? :dry:

Tel que j’ai écris les choses, si il n’y a pas de certificats pour l’utilisateur on prend le certificat global de la société et si celui-ci n’est pas présent ben on ne signe pas

Oui c’est vrai :wink:

Dans mon raisonnement c’est soit un certificat global (tout le monde signe) ou individuel (seuls les usagers avec certificat peuvent). Ça reste une signature donc n’importent qui ne doit pas pouvoir signer !
@+

Je dois être con, c’est pas possible autrement… :angry: :unsure:

Dans le même dossier (certificates) j’ai placé un .png avec ma signature. Le but est de l’apposer sur le document… Mais je n’y arrive pas !
Après deux heures d’essais j’ai pris exemple sur l’insertion du logo mais rien, nada, walou… :dry:

Une âme charitable pour les deux lignes de code ??? :tongue:

@mdallosto
Un copier/coller d’un de mes codes…

$quality_approved=$conf->mycompany->dir_output.'/logos/quality_approved.png'; if (is_readable($quality_approved)){ $height=pdf_getHeightForLogo($quality_approved); $pdf->Image($quality_approved, 150, 245, 0, $height); // width=0 (auto) }
@+

1 « J'aime »

Merci @philazerty,

mais forcement, ca ne fonctionnait pas :unhappy: du coup je ne sais plus dire pourquoi mais déjà, le placement dans le fichier faisait que ca n’affichait pas l’image, et au niveau du placement du logo, ca na marche pas non plus parce qu’à ce moment là l’user ID est vide… :pinch:

Donc, je fais un petit résumé:

1 - On créaient un dossier /certificates sous documents/users/(ID utilisateur)/
2 - On y place notre certificat « signature.crt » et un .png (signature.png) si on souhaites apposer sa signature sur le document.

Pour la génération:
openssl req -x509 -nodes -days 365000 -newkey rsa:2048 -keyout signature.crt -out signature.crt
openssl pkcs12 -export -in signature.crt -out signature.p12 

3- Dans notre modèle de facture on ajoute les lignes suivantes: (vers la ligne 700, avant « // Show square »

//**************** Signature ******************************
$cert=file_get_contents(DOL_DATA_ROOT."/users/".$user->id."/certificates/signature.crt");
// si l'utilisateur n'a pas de certificat, on prend le certificat
if (!$cert)
	$cert=file_get_contents(DOL_DATA_ROOT."/mycompany/certificates/signature.crt");
if ($cert) {
	$info = array(
		'Name' => $this->emetteur->name, 
		'Location' => getCountry($this->emetteur->country_code, 0),
		'Reason' => 'FACTURE',
		'ContactInfo' => $this->emetteur->email);

	$pdf->setSignature($cert, $cert, $this->emetteur->name, '', 2, $info);

         //******* signature .png **************
        $sign=(DOL_DATA_ROOT."/users/".$user->id."/certificates/signature.png");
        if (is_readable($sign)){
	       $height=pdf_getHeightForLogo($sign);
	       $pdf->Image($sign, 150, 235, 0, $height);	// width=0 (auto)
               }
	}
//******************************************************************
// Show square

Tu ne peux pas le mettre là. Tu es au niveau de la définition du pdf
Plutot dans le pied de page ? Ligne 730 environ.

[code]
// Pied de page
$this->_pagefoot($pdf,$object,$outputlangs);
if (method_exists($pdf,‹ AliasNbPages ›)) $pdf->AliasNbPages();

			// Add by Philazerty for eletronic signature stamp
			// Update : 11/11/2019
			//******* signature.png est carré **************
			$imgsignature=(DOL_DATA_ROOT."/mycompany/certificates/signature.png");
			if (is_readable($imgsignature)){
				$height=pdf_getHeightForLogo($imgsignature);
				$pdf->Image($imgsignature, $this->page_largeur-$this->marge_droite-16, $this->page_hauteur-$this->marge_basse-16, 0, 16);	// width=0 (auto)
			}[/code]

@+

Ici, on est dans la fonction « write_file », qu’est ce qui pose problème ? :unhappy:

J’ai essayé de placé tout ca dans « _pagefoot » mais ca ne marche pas :unsure:

cette histoire de signature est-elle obligatoire sur le pdf dans le cas du format pdf/A?

Non, je ne penses pas… Mais au moins c’est prévu :tongue:
C’est la loi de Murphy, il suffit de na pas le prévoir pour qu’on la demande :wink:

@defrance
Obligation à compter de 2020. Pour les administrations Et entreprise. Encore une veille juridique zappée.
Il faut pouvoir prouver l’authenticité de l’origine d’une facture. Seul la signature le permet avec un vrai certificat et non un autosigné.
Le pdfa permet surtout la portabilité des pdf et l’archivage. Il n’y a aucune sécurité. Je peut en prendre un le modifier et refaire un pdfa avec.
@+

Édit : loi du 6 août 2015 applicables à toutes les entreprises à compter de 2020

Les textes valables pour tout le monde en 2020 ne concernent que l’obligation d’accepter la réception des factures au format électronique.
Rien pour leur émission (à part pour l’administration, cf chorus)

Mais mieux vaut s’en occuper maintenant car c’est une pratique qui va rapidement se généraliser (sans parler des entreprises qui « l’imposeront » à leurs fournisseurs)

Un résumé assez bien fait :

@arre
Chorus n’oblige pas la signature puisque considéré comme édi. Il te faut un compte pour déposer une facture donc l’origine est connue.

Pour les entreprises il faut pouvoir certifier l’origine d’une facture. A part l’edi il 'y a que la signature ou le retour au papier.

On a maintenant La solution Mais dommage encore une fois que rien ne soit anticipé Au niveau de l’association.
@+

Bonjour,
il faudrait à priori avoir un pdf/3A
(source : Une facture de vente en format électronique (CGI art. 289, VI) est une facture ou un flux de factures créé, transmis, reçu et archivé sous forme électronique, quelle qu’elle soit (BOFiP-TVA-DECLA-30-20-30-10-§ 70-07/02/2018). Cela suppose que l’intégralité du processus de facturation soit électronique. Aussi, une facture initialement conçue sur support papier puis numérisée, envoyée et reçue par courrier électronique ne constitue pas une facture électronique mais une facture papier (BOFiP-TVA-DECLA-30-20-30-10-§ 80-07/02/2018).)
Cela ne semble pas être le cas dans Dolibarr
Cordialement

Bonjour,
j’ai généré en validant le paramètre 1 pour PDF_USE_1A
les factures générées par Dolibarr sont reconnues comme telles par Acrobat:


mais lorsque je fais le test de compatibilité sur internet par https://www.pdfen.com/pdf-a-validator (par exemple): voici ce qu’il rapporte:
image
si je le convertis en pdf/A sur le même site (https://www.pdfen.com/convert-to-pdfa)
alors après cela fonctionne
image

même constatation sur d’autres sites comme par exemple

image

et auparavant!

Y-a-t-il une explication?
D’avance merci
Cordialement