dolibarr-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Dolibarr-dev] Patch Correction mise en page adresse contact sur PDF


From: Raphaël Bertrand (Résultic)
Subject: Re: [Dolibarr-dev] Patch Correction mise en page adresse contact sur PDF (bugs #21120 & #22074)
Date: Tue, 10 Jun 2008 17:06:30 +0200
User-agent: Thunderbird 2.0.0.14 (Windows/20080421)

Tant qu'à faire,
puisqu'il n'a pas encore été publié, j'en profite pour lui faire résoudre le bug #21120 en plus du bug #22074
https://savannah.nongnu.org/bugs/?21120
https://savannah.nongnu.org/bugs/?22074

Les pdf savent maintenant gérer les noms longs pour les CLIENTS (dans la limite fixé par le champ MySql)

PS: merci de me dire si vous préférez des patch individuels au lieu de patch cumulatifs quand je modifie plusieurs fois le même fichier


*Raphaël Bertrand*
Résultic - Management & Informatique
Siège : 11 rue Tronchet - 69006 LYON
Bureaux : 11 pl Maréchal Lyautey - 69006 LYON
Fixe. 08 74 77 00 70
Fax. 08 25 24 85 02
E-Mail : address@hidden

Raphaël Bertrand (Résultic) a écrit :
Voici maintenant le patch cummulatif pour einstein, azur et crabe
qui corrige pour tous le "sélectionnez un pays" parasite,
et pour eintein, le \n manquant.


*Raphaël Bertrand*
Résultic - Management & Informatique
Siège : 11 rue Tronchet - 69006 LYON
Bureaux : 11 pl Maréchal Lyautey - 69006 LYON
Fixe. 08 74 77 00 70
Fax. 08 25 24 85 02
E-Mail : address@hidden

Raphaël Bertrand (Résultic) a écrit :
Bonjour,

Désolé d'être forcé de vous faire patcher le patch,
mais il manque un retour à la ligne dans einstein
qui aurait du être rajouté.
Ceci est corrigé dans la présente PJ

D'autre part une question se pose concernant l'affichage de forme Prénom NOM au lieu de NOM Prénom, car cet affichage étant géré globalement par la fonction getFullName de htdocs/contact.class.php la modification serait d'un impact non négligeable, puisque agissant partout où l'on fait appel à cette fonction (soit assez fréquemment).

Concernant le débat sur le copyright, c'est moi qui ais choisi de l'indiquer ainsi pour mentionner le cadre dans lequel j'effectuais le travail, car cela me paraissait normal. Cependant, si cela pose problème il est tout à fait possible de la modifier selon ce dont vous aurez convenu.

Je proposerais prochainement un patch permettant de ne pas afficher dans les PDF le "sélectionnez un pays" parasite qui vient quand aucun pays n'a été affecté pour le destinataire.

*Raphaël Bertrand*
Résultic - Management & Informatique
Siège : 11 rue Tronchet - 69006 LYON
Bureaux : 11 pl Maréchal Lyautey - 69006 LYON
Fixe. 08 74 77 00 70
Fax. 08 25 24 85 02
E-Mail : address@hidden

Raphaël Bertrand (Résultic) a écrit :
Bonjour,

Ci joint un patch cummulatif incluant l'ajout du support de l'ajout d'un watermark personnalisé sur les brouillons, et la correction du bug de mise en page sur les pdf générés par einstein, crabe et azur dans le cas de l'utilisation de l'adresse d'un contact. Ce défaut de mise en page était lié à une non homogénéité dans la manière d'imprimer les coordonnées dans le cas de l'utilisation d'un contact ou de sa non utilisation. Il a été corrigé en appliquant au cas d'un contact choisi la méthode proposée dans le cas d'une non utilisation d'une adresse spécifique, celui-ci étant fonctionnel sans défaut. (utilisation d'une chaine avec des retours à la ligne pour gérer l'adresse au lieu de plusieurs chaines distinctes)


*Raphaël Bertrand*
Résultic - Management & Informatique
Siège : 11 rue Tronchet - 69006 LYON
Bureaux : 11 pl Maréchal Lyautey - 69006 LYON
Fixe. 08 74 77 00 70
Fax. 08 25 24 85 02
E-Mail : address@hidden

Raphaël Bertrand (Résultic) a écrit :
Voici le patch prêt à être publié s'il vous convient.
Il ajoute la fonctionnalité de watermark sur les
proposition, factures, commandes et fiches d'intervention
Après activation par définition d'un texte de watermark dans la configuration des modules correspondants.

L'ajout du watermark se fait de facon autonome au niveau du modèle de document, dans la fonction _pagehead.


*Raphaël Bertrand*
Résultic - Management & Informatique
Siège : 11 rue Tronchet - 69006 LYON
Bureaux : 11 pl Maréchal Lyautey - 69006 LYON
Fixe. 08 74 77 00 70
Fax. 08 25 24 85 02
E-Mail : address@hidden

Raphaël Bertrand (Résultic) a écrit :
Après simplification du code (qui ne fait plus appel à d'autres fonctions que celles déjà présentes), et ajout du support du watermark sur les factures en plus des propales,
voici ci joint le patch que cela donne (généré par CVS+winmerge)

*Raphaël Bertrand*
Résultic - Management & Informatique
Siège : 11 rue Tronchet - 69006 LYON
Bureaux : 11 pl Maréchal Lyautey - 69006 LYON
Fixe. 08 74 77 00 70
Fax. 08 25 24 85 02
E-Mail : address@hidden

Raphaël Bertrand (Résultic) a écrit :
Venant juste d'avoir la réponse,
et ayant déjà commencé à le faire,
je vous transmets ce que j'ai fait pour le moment.

Au final, je fais juste appel à une fonction supplémentaire _rotate dans le module pdf, mais celle-ci peut être mise inline le cas échéant, n'étant utilisée qu'une seule fois (ou presque).

*Raphaël Bertrand*
Résultic - Management & Informatique
Siège : 11 rue Tronchet - 69006 LYON
Bureaux : 11 pl Maréchal Lyautey - 69006 LYON
Fixe. 08 74 77 00 70
Fax. 08 25 24 85 02
E-Mail : address@hidden

Eldy a écrit :
Raphaël Bertrand (Résultic) a écrit :
Bonjour,

J'ai commencé à travailler sur la task #7349,
en regardant comment je pouvais ajouter le filigrane "Brouillon" sur les propales dans un premier temps.

J'ai trouvé sur le site FPDF un exemple de watermark:
http://www.fpdf.org/?go=script&id=9
qui utilise les fonctions de la surcouche PDF_rotate:
http://www.fpdf.org/?go=script&id=2

Cependant Dolibarr utilise la librairie FPDI, à travers la classe ModelePDFPropales (htdocs\includes\modules\propale\modules_propale.php),
et le module pdf correspondant au type de template
(htdocs\includes\modules\propale\pdf_propale_azur.modules.php par exemple)

Je pense que c'est ici qu'il faut que j'ajoute le watermark, dans la fonction _pagehead de chacun de ces squelettes, et concernant les fonctions récupérées, soit les ajouter aux modules pdf sans les mutualiser, soit les mutualiser dans un fichier autre (une lib)

Merci de me dire ce que vous en pensez.

Je suggère de faire beaucoup plus simple. Il n'est pas nécessaire de surcharger par une librairie juste pour ce besoin (Dolibarr a déjà pas mal de dépendances). On peut très bien intégrer un watermark en fond de page en laissant les lettres droites et en les indentant en hauteur et largeur comme cela

B
  R
     O
         U
            I
              L
                 L
                    O
                        N

Et pour cela tu peux te contenter des fonctions de base de FPDF. Le tout est de mettre la marque en couleur et derrière tout autre texte.


------------------------------------------------------------------------

_______________________________________________
Dolibarr-dev mailing list
address@hidden
http://lists.nongnu.org/mailman/listinfo/dolibarr-dev


------------------------------------------------------------------------

_______________________________________________
Dolibarr-dev mailing list
address@hidden
http://lists.nongnu.org/mailman/listinfo/dolibarr-dev


------------------------------------------------------------------------

_______________________________________________
Dolibarr-dev mailing list
address@hidden
http://lists.nongnu.org/mailman/listinfo/dolibarr-dev


------------------------------------------------------------------------

_______________________________________________
Dolibarr-dev mailing list
address@hidden
http://lists.nongnu.org/mailman/listinfo/dolibarr-dev


------------------------------------------------------------------------

_______________________________________________
Dolibarr-dev mailing list
address@hidden
http://lists.nongnu.org/mailman/listinfo/dolibarr-dev


------------------------------------------------------------------------

_______________________________________________
Dolibarr-dev mailing list
address@hidden
http://lists.nongnu.org/mailman/listinfo/dolibarr-dev
Index: commande/pdf_edison.modules.php
===================================================================
RCS file: 
/sources/dolibarr/dolibarr/htdocs/includes/modules/commande/pdf_edison.modules.php,v
retrieving revision 1.17
diff -u -r1.17 pdf_edison.modules.php
--- commande/pdf_edison.modules.php     9 Jun 2008 18:55:25 -0000       1.17
+++ commande/pdf_edison.modules.php     10 Jun 2008 14:43:08 -0000
@@ -377,7 +377,7 @@
                $pdf->SetXY(102,42);
                $pdf->MultiCell(96,5, $com->client->nom);
                $pdf->SetFont('Arial','B',11);
-               $pdf->SetXY(102,47);
+               $pdf->SetXY(102,$pdf->GetY());
                $pdf->MultiCell(96,5, $com->client->adresse . "\n" . 
$com->client->cp . " " . $com->client->ville);
                $pdf->rect(100, 40, 100, 40);
        
Index: commande/pdf_einstein.modules.php
===================================================================
RCS file: 
/sources/dolibarr/dolibarr/htdocs/includes/modules/commande/pdf_einstein.modules.php,v
retrieving revision 1.53
diff -u -r1.53 pdf_einstein.modules.php
--- commande/pdf_einstein.modules.php   9 Jun 2008 18:55:25 -0000       1.53
+++ commande/pdf_einstein.modules.php   10 Jun 2008 14:41:08 -0000
@@ -913,15 +913,16 @@
                                        // Nom societe
                                        $pdf->SetXY(102,$posy+3);
                                        $pdf->SetFont('Arial','B',11);
-                                       $pdf->MultiCell(106,4, 
$object->client->nom, 0, 'L');
+                                       $pdf->MultiCell(96,4, 
$object->client->nom, 0, 'L');
                                        
                                        // Nom client
                                        $carac_client = 
"\n".$object->contact->getFullName($outputlangs,1);
                                        
                                        // Caractéristiques client
-                                       
$carac_client.=$object->contact->adresse;
+                                       
$carac_client.="\n".$object->contact->adresse;
                                        
$carac_client.="\n".$object->contact->cp . " " . $object->contact->ville."\n";
-                                       if ($this->emetteur->pays_code != 
$object->contact->pays_code)
+                                       //Pays si definit et different de 
l'emetteur
+                                       if ( (!empty( 
$object->contact->pays_code )) && ($this->emetteur->pays_code != 
$object->contact->pays_code) )
                                        {
                                                
$carac_client.=$object->contact->pays."\n";
                                        }
@@ -931,7 +932,7 @@
                                        // Nom client
                                        $pdf->SetXY(102,$posy+3);
                                        $pdf->SetFont('Arial','B',11);
-                                       $pdf->MultiCell(106,4, 
$object->client->nom, 0, 'L');
+                                       $pdf->MultiCell(96,4, 
$object->client->nom, 0, 'L');
                                        
                                        // Nom du contact suivi commande si 
c'est une société
                                        $arrayidcontact = 
$object->getIdContact('external','CUSTOMER');
@@ -949,8 +950,8 @@
                                        
$carac_client.="\n".$object->client->adresse;
                                        $carac_client.="\n".$object->client->cp 
. " " . $object->client->ville."\n";
 
-                                       //Pays si différent de l'émetteur
-                                       if ($this->emetteur->pays_code != 
$object->client->pays_code)
+                                       //Pays si defini et different de 
l'emetteur
+                                       if ( (!empty( 
$object->client->pays_code )) && ($this->emetteur->pays_code != 
$object->client->pays_code) )
                                        {
                                                
$carac_client.=$object->client->pays."\n";
                                        }
@@ -958,6 +959,7 @@
                                // Numéro TVA intracom
                                if ($object->client->tva_intra) 
$carac_client.="\n".$outputlangs->transnoentities("VATIntraShort").': 
'.$object->client->tva_intra;
         $pdf->SetFont('Arial','',9);
+               $posy=$pdf->GetY()-9; //Auto Y coord readjust for multiline name
              $pdf->SetXY(102,$posy+6);
              $pdf->MultiCell(86,4, $carac_client);
            }
Index: facture/pdf_crabe.modules.php
===================================================================
RCS file: 
/sources/dolibarr/dolibarr/htdocs/includes/modules/facture/pdf_crabe.modules.php,v
retrieving revision 1.164
diff -u -r1.164 pdf_crabe.modules.php
--- facture/pdf_crabe.modules.php       9 Jun 2008 18:55:25 -0000       1.164
+++ facture/pdf_crabe.modules.php       10 Jun 2008 14:45:33 -0000
@@ -1106,7 +1106,7 @@
                                // Nom societe
                                $pdf->SetXY(102,$posy+3);
                                $pdf->SetFont('Arial','B',11);
-                               $pdf->MultiCell(106,4, $object->client->nom, 0, 
'L');
+                               $pdf->MultiCell(96,4, $object->client->nom, 0, 
'L');
                                
                                // Nom client
                                $carac_client = 
"\n".$object->contact->getFullName($outputlangs,1);
@@ -1114,7 +1114,8 @@
                                // Caractéristiques client
                                $carac_client.="\n".$object->contact->adresse;
                                $carac_client.="\n".$object->contact->cp . " " 
. $object->contact->ville."\n";
-                               if ($this->emetteur->pays_code != 
$object->contact->pays_code)
+                               //Pays si definit et different de l'emetteur
+                               if ( (!empty( $object->contact->pays_code )) && 
($this->emetteur->pays_code != $object->contact->pays_code) )
                                {
                                        
$carac_client.=$object->contact->pays."\n";
                                }
@@ -1124,7 +1125,7 @@
                                // Nom client
                                $pdf->SetXY(102,$posy+3);
                                $pdf->SetFont('Arial','B',11);
-                               $pdf->MultiCell(106,4, $object->client->nom, 0, 
'L');
+                               $pdf->MultiCell(96,4, $object->client->nom, 0, 
'L');
                                
                                // Nom du contact facturation si c'est une 
société
                                $arrayidcontact = 
$object->getIdContact('external','BILLING');
@@ -1142,8 +1143,8 @@
                                $carac_client.="\n".$object->client->adresse;
                                $carac_client.="\n".$object->client->cp . " " . 
$object->client->ville."\n";
 
-                                       //Pays si différent de l'émetteur
-                                       if ($this->emetteur->pays_code != 
$object->client->pays_code)
+                                       //Pays si defini et different de 
l'emetteur
+                                       if ( (!empty( 
$object->client->pays_code )) && ($this->emetteur->pays_code != 
$object->client->pays_code) )
                                        {
                                                
$carac_client.=$object->client->pays."\n";
                                        }
@@ -1151,6 +1152,7 @@
                        // Numéro TVA intracom
                        if ($object->client->tva_intra) 
$carac_client.="\n".$outputlangs->transnoentities("VATIntraShort").': 
'.$object->client->tva_intra;
                        $pdf->SetFont('Arial','',9);
+                       $posy=$pdf->GetY()-9; //Auto Y coord readjust for 
multiline name
                        $pdf->SetXY(102,$posy+6);
                        $pdf->MultiCell(86,4, $carac_client);
                }
Index: facture/pdf_huitre.modules.php
===================================================================
RCS file: 
/sources/dolibarr/dolibarr/htdocs/includes/modules/facture/pdf_huitre.modules.php,v
retrieving revision 1.34
diff -u -r1.34 pdf_huitre.modules.php
--- facture/pdf_huitre.modules.php      9 Jun 2008 18:55:25 -0000       1.34
+++ facture/pdf_huitre.modules.php      10 Jun 2008 14:46:21 -0000
@@ -607,7 +607,7 @@
     $pdf->SetXY(102,42);
     $pdf->MultiCell(96,5, $fac->client->nom, 0, 'C');
     $pdf->SetFont('Arial','B',11);
-    $pdf->SetXY(102,50);
+    $pdf->SetXY(102,$pdf->GetY()+3);
     $pdf->MultiCell(96,5, $fac->client->adresse . "\n\n" . $fac->client->cp . 
" " . $fac->client->ville ,  0, 'C');
        
        
Index: fichinter/pdf_soleil.modules.php
===================================================================
RCS file: 
/sources/dolibarr/dolibarr/htdocs/includes/modules/fichinter/pdf_soleil.modules.php,v
retrieving revision 1.41
diff -u -r1.41 pdf_soleil.modules.php
--- fichinter/pdf_soleil.modules.php    9 Jun 2008 18:55:25 -0000       1.41
+++ fichinter/pdf_soleil.modules.php    10 Jun 2008 14:55:45 -0000
@@ -230,9 +230,9 @@
                                $pdf->SetFont('Arial','B',12);
                                $fichinter->fetch_client();
                                $pdf->SetXY(102,42);
-                               $pdf->MultiCell(66,5, $fichinter->client->nom);
+                               $pdf->MultiCell(86,5, $fichinter->client->nom);
                                $pdf->SetFont('Arial','B',11);
-                               $pdf->SetXY(102,47);
+                               $pdf->SetXY(102,$pdf->GetY());
                                $pdf->MultiCell(66,5, 
$fichinter->client->adresse . "\n" . $fichinter->client->cp . " " . 
$fichinter->client->ville);
                                $pdf->rect(100, 40, 100, 40);
 
Index: propale/pdf_propale_azur.modules.php
===================================================================
RCS file: 
/sources/dolibarr/dolibarr/htdocs/includes/modules/propale/pdf_propale_azur.modules.php,v
retrieving revision 1.113
diff -u -r1.113 pdf_propale_azur.modules.php
--- propale/pdf_propale_azur.modules.php        9 Jun 2008 18:55:25 -0000       
1.113
+++ propale/pdf_propale_azur.modules.php        10 Jun 2008 14:29:58 -0000
@@ -939,7 +939,7 @@
                                // Nom societe
                                $pdf->SetXY(102,$posy+3);
                                $pdf->SetFont('Arial','B',11);
-                               $pdf->MultiCell(106,4, $object->client->nom, 0, 
'L');
+                               $pdf->MultiCell(96,4, $object->client->nom, 0, 
'L');
                                
                                // Nom client
                                $carac_client = 
"\n".$object->contact->getFullName($outputlangs,1);
@@ -947,7 +947,8 @@
                                // Caractéristiques client
                                $carac_client.="\n".$object->contact->adresse;
                                $carac_client.="\n".$object->contact->cp . " " 
. $object->contact->ville."\n";
-                               if ($this->emetteur->pays_code != 
$object->contact->pays_code)
+                               //Pays si definit et different de l'emetteur
+                               if ( (!empty( $object->contact->pays_code )) && 
($this->emetteur->pays_code != $object->contact->pays_code) )
                                {
                                        
$carac_client.=$object->contact->pays."\n";
                                }
@@ -957,7 +958,7 @@
                                // Nom client
                    $pdf->SetXY(102,$posy+3);
                    $pdf->SetFont('Arial','B',11);
-                   $pdf->MultiCell(106,4, $object->client->nom, 0, 'L');
+                   $pdf->MultiCell(96,4, $object->client->nom, 0, 'L');
                    
                    // Nom du contact suivi propal si c'est une société
                                $arrayidcontact = 
$object->getIdContact('external','CUSTOMER');
@@ -975,8 +976,8 @@
                        $carac_client.="\n".$object->client->adresse;
                        $carac_client.="\n".$object->client->cp . " " . 
$object->client->ville."\n";
                    
-                               //Pays si différent de l'émetteur
-                               if ($this->emetteur->pays_code != 
$object->client->pays_code)
+                               //Pays si defini et different de l'emetteur
+                               if ( (!empty( $object->client->pays_code )) && 
($this->emetteur->pays_code != $object->client->pays_code) )
                                {
                                        
$carac_client.=$object->client->pays."\n";
                                }
@@ -984,6 +985,7 @@
                        // Numéro TVA intracom
                        if ($object->client->tva_intra) 
$carac_client.="\n".$outputlangs->transnoentities("VATIntraShort").': 
'.$object->client->tva_intra;
                  $pdf->SetFont('Arial','',9);
+                 $posy=$pdf->GetY()-9; //Auto Y coord readjust for multiline 
name
                  $pdf->SetXY(102,$posy+6);
                  $pdf->MultiCell(86,4, $carac_client);
                }
Index: propale/pdf_propale_jaune.modules.php
===================================================================
RCS file: 
/sources/dolibarr/dolibarr/htdocs/includes/modules/propale/pdf_propale_jaune.modules.php,v
retrieving revision 1.37
diff -u -r1.37 pdf_propale_jaune.modules.php
--- propale/pdf_propale_jaune.modules.php       9 Jun 2008 18:55:26 -0000       
1.37
+++ propale/pdf_propale_jaune.modules.php       10 Jun 2008 14:37:17 -0000
@@ -348,7 +348,7 @@
       $pdf->SetXY(102,42);
       $pdf->MultiCell(96,5, $propale->client->nom);
       $pdf->SetFont('Arial','B',11);
-      $pdf->SetXY(102,47);
+      $pdf->SetXY(102,$pdf->GetY());
       $pdf->MultiCell(96,5, $propale->client->adresse . "\n" . 
$propale->client->cp . " " . $propale->client->ville);
       $pdf->rect(100, 40, 100, 40);
 


reply via email to

[Prev in Thread] Current Thread [Next in Thread]