From f5f1d37ea054bee554e0d07b56d3728eaea12902 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 16 May 2011 14:00:09 +0000 Subject: [PATCH] Enhancements in doc generation. --- .../includes/modules/action/rapport.pdf.php | 14 ---- .../modules/commande/pdf_edison.modules.php | 16 +---- .../modules/commande/pdf_einstein.modules.php | 16 +---- .../pdf/pdf_expedition_merou.modules.php | 14 ---- .../pdf/pdf_expedition_rouget.modules.php | 14 ---- .../doc/doc_generic_invoice_odt.modules.php | 65 +++++++++++++++--- .../modules/facture/doc/pdf_crabe.modules.php | 19 +---- .../facture/doc/pdf_oursin.modules.php | 17 +---- .../modules/fichinter/pdf_soleil.modules.php | 14 ---- .../livraison/pdf/pdf_sirocco.modules.php | 14 ---- .../livraison/pdf/pdf_typhon.modules.php | 16 +---- .../member/cards/pdf_standard.class.php | 15 ---- .../member/labels/pdf_standardlabel.class.php | 15 ---- .../project/pdf/pdf_baleine.modules.php | 14 ---- .../propale/pdf_propale_azur.modules.php | 2 +- .../propale/pdf_propale_jaune.modules.php | 14 ---- .../modules/rapport/pdf_paiement.class.php | 15 ---- .../societe/doc/doc_generic_odt.modules.php | 2 +- .../pdf/pdf_canelle.modules.php | 16 +---- .../pdf/pdf_muscadet.modules.php | 16 +---- htdocs/install/default.css | 8 ++- .../invoices/template_invoice.odt | Bin 22708 -> 28461 bytes htdocs/install/fileconf.php | 8 ++- 23 files changed, 76 insertions(+), 268 deletions(-) diff --git a/htdocs/includes/modules/action/rapport.pdf.php b/htdocs/includes/modules/action/rapport.pdf.php index b7dfc1a2464..e7e4eac9505 100644 --- a/htdocs/includes/modules/action/rapport.pdf.php +++ b/htdocs/includes/modules/action/rapport.pdf.php @@ -106,20 +106,6 @@ class CommActionRapport if (file_exists($dir)) { - // Protection et encryption du pdf -/* if ($conf->global->PDF_SECURITY_ENCRYPTION) - { - $pdf=new FPDI_Protection('P','mm',$this->format); - $pdfrights = array('print'); // Ne permet que l'impression du document - $pdfuserpass = ''; // Mot de passe pour l'utilisateur final - $pdfownerpass = NULL; // Mot de passe du proprietaire, cree aleatoirement si pas defini - $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass); - } - else - { - $pdf=new FPDI('P','mm',$this->format); - } -*/ $pdf=pdf_getInstance($this->format); if (class_exists('TCPDF')) diff --git a/htdocs/includes/modules/commande/pdf_edison.modules.php b/htdocs/includes/modules/commande/pdf_edison.modules.php index 29e1fff7a36..ed5406a52e4 100644 --- a/htdocs/includes/modules/commande/pdf_edison.modules.php +++ b/htdocs/includes/modules/commande/pdf_edison.modules.php @@ -74,7 +74,7 @@ class pdf_edison extends ModelePDFCommandes // Defini position des colonnes $this->posxdesc=$this->marge_gauche+1; - $this->posxtva=113; + $this->posxtva=111; $this->posxup=126; $this->posxqty=145; $this->posxdiscount=162; @@ -139,20 +139,6 @@ class pdf_edison extends ModelePDFCommandes if (file_exists($dir)) { - // Protection et encryption du pdf -/* if ($conf->global->PDF_SECURITY_ENCRYPTION) - { - $pdf=new FPDI_Protection('P','mm',$this->format); - $pdfrights = array('print'); // Ne permet que l'impression du document - $pdfuserpass = ''; // Mot de passe pour l'utilisateur final - $pdfownerpass = NULL; // Mot de passe du proprietaire, cree aleatoirement si pas defini - $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass); - } - else - { - $pdf=new FPDI('P','mm',$this->format); - } -*/ $pdf=pdf_getInstance($this->format); if (class_exists('TCPDF')) diff --git a/htdocs/includes/modules/commande/pdf_einstein.modules.php b/htdocs/includes/modules/commande/pdf_einstein.modules.php index bfe70e745f3..4fe63227539 100644 --- a/htdocs/includes/modules/commande/pdf_einstein.modules.php +++ b/htdocs/includes/modules/commande/pdf_einstein.modules.php @@ -88,7 +88,7 @@ class pdf_einstein extends ModelePDFCommandes // Defini position des colonnes $this->posxdesc=$this->marge_gauche+1; - $this->posxtva=113; + $this->posxtva=111; $this->posxup=126; $this->posxqty=145; $this->posxdiscount=162; @@ -159,20 +159,6 @@ class pdf_einstein extends ModelePDFCommandes { $nblignes = sizeof($object->lines); - // Protection et encryption du pdf -/* if ($conf->global->PDF_SECURITY_ENCRYPTION) - { - $pdf=new FPDI_Protection('P','mm',$this->format); - $pdfrights = array('print'); // Ne permet que l'impression du document - $pdfuserpass = ''; // Mot de passe pour l'utilisateur final - $pdfownerpass = NULL; // Mot de passe du proprietaire, cree aleatoirement si pas defini - $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass); - } - else - { - $pdf=new FPDI('P','mm',$this->format); - } -*/ $pdf=pdf_getInstance($this->format); if (class_exists('TCPDF')) diff --git a/htdocs/includes/modules/expedition/pdf/pdf_expedition_merou.modules.php b/htdocs/includes/modules/expedition/pdf/pdf_expedition_merou.modules.php index 5c260a3d773..652e792297d 100644 --- a/htdocs/includes/modules/expedition/pdf/pdf_expedition_merou.modules.php +++ b/htdocs/includes/modules/expedition/pdf/pdf_expedition_merou.modules.php @@ -142,20 +142,6 @@ Class pdf_expedition_merou extends ModelePdfExpedition //Si le dossier existe if (file_exists($dir)) { - // Protection et encryption du pdf -/* if ($conf->global->PDF_SECURITY_ENCRYPTION) - { - $pdf=new FPDI_Protection('l','mm',$this->format); - $pdfrights = array('print'); // Ne permet que l'impression du document - $pdfuserpass = ''; // Mot de passe pour l'utilisateur final - $pdfownerpass = NULL; // Mot de passe du proprietaire, cree aleatoirement si pas defini - $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass); - } - else - { - $pdf=new FPDI('l','mm',$this->format); - } -*/ $pdf=pdf_getInstance($this->format,'mm','l'); if (class_exists('TCPDF')) diff --git a/htdocs/includes/modules/expedition/pdf/pdf_expedition_rouget.modules.php b/htdocs/includes/modules/expedition/pdf/pdf_expedition_rouget.modules.php index b5ef3fb44a2..376f2d5640f 100644 --- a/htdocs/includes/modules/expedition/pdf/pdf_expedition_rouget.modules.php +++ b/htdocs/includes/modules/expedition/pdf/pdf_expedition_rouget.modules.php @@ -262,20 +262,6 @@ Class pdf_expedition_rouget extends ModelePdfExpedition if (file_exists($dir)) { - // Protection et encryption du pdf -/* if ($conf->global->PDF_SECURITY_ENCRYPTION) - { - $pdf=new FPDI_Protection('P','mm',$this->format); - $pdfrights = array('print'); // Ne permet que l'impression du document - $pdfuserpass = ''; // Mot de passe pour l'utilisateur final - $pdfownerpass = NULL; // Mot de passe du proprietaire, cree aleatoirement si pas defini - $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass); - } - else - { - $pdf=new FPDI('P','mm',$this->format); - } -*/ $pdf=pdf_getInstance($this->format); if (class_exists('TCPDF')) diff --git a/htdocs/includes/modules/facture/doc/doc_generic_invoice_odt.modules.php b/htdocs/includes/modules/facture/doc/doc_generic_invoice_odt.modules.php index 286336f444e..3b9b90cd177 100644 --- a/htdocs/includes/modules/facture/doc/doc_generic_invoice_odt.modules.php +++ b/htdocs/includes/modules/facture/doc/doc_generic_invoice_odt.modules.php @@ -97,23 +97,39 @@ class doc_generic_invoice_odt extends ModelePDFFactures { global $conf; + $invoice_source=new Facture($this->db); + if ($object->fk_facture_source > 0) + { + $invoice_source->fetch($object->fk_facture_source); + } + $alreadypayed=price($object->getSommePaiement(),'MT'); + return array( 'object_id'=>$object->id, 'object_ref'=>$object->ref, - 'object_ref_customer'=>$object->ref_client, + 'object_ref_ext'=>$object->ref_ext, + 'object_ref_customer'=>$object->ref_client, 'object_ref_supplier'=>$object->ref_fournisseur, - 'object_date'=>dol_print_date($object->date,'day'), - 'object_date_creation'=>dol_print_date($object->date_creation,'dayhour'), + 'object_source_invoice_ref'=>$invoice_source->ref, + 'object_date'=>dol_print_date($object->date,'day'), + 'object_date_limit'=>dol_print_date($object->date_lim_reglement,'dayhour'), + 'object_date_creation'=>dol_print_date($object->date_creation,'day'), + 'object_date_modification'=>dol_print_date($object->date_modification,'day'), 'object_date_validation'=>dol_print_date($object->date_validation,'dayhour'), - 'object_total_ht'=>price($object->total_ht), + 'object_payment_mode'=>$object->mode_reglement, + 'object_payment_term'=>$object->cond_reglement, + 'object_total_ht'=>price($object->total_ht), 'object_total_vat'=>price($object->total_tva), 'object_total_ttc'=>price($object->total_ttc), 'object_vatrate'=>vatrate($object->tva), 'object_note_private'=>$object->note, - 'object_note'=>$object->note_public + 'object_note'=>$object->note_public, + // Payments + 'object_already_payed'=>$alreadypayed, + 'object_remain_to_pay'=>price($object->total_ttc - $alreadypayed,'MT') ); } - + /** * Define array with couple substitution key => substitution value * @@ -223,7 +239,7 @@ class doc_generic_invoice_odt extends ModelePDFFactures $texte.= ''; // Scan directories - if (sizeof($listofdir)) $texte.=$langs->trans("NumberOfModelFilesFound").': '.sizeof($listoffiles); + if (sizeof($listofdir)) $texte.=$langs->trans("NumberOfModelFilesFound").': '.sizeof($listoffiles).''; $texte.= ''; @@ -337,6 +353,23 @@ class doc_generic_invoice_odt extends ModelePDFFactures $socobject=$object->client; } + // Line of free text + $newfreetext=''; + $paramfreetext='FACTURE_FREE_TEXT'; + if (! empty($conf->global->$paramfreetext)) + { + // Make substitution + $substitutionarray=array( + '__FROM_NAME__' => $this->emetteur->nom, + '__FROM_EMAIL__' => $this->emetteur->email, + '__TOTAL_TTC__' => $object->total_ttc, + '__TOTAL_HT__' => $object->total_ht, + '__TOTAL_VAT__' => $object->total_vat + ); + + $newfreetext=make_substitutions($conf->global->$paramfreetext,$substitutionarray,$outputlangs,$object); + } + // Open and load template require_once(DOL_DOCUMENT_ROOT.'/includes/odtphp/odf.php'); $odfHandler = new odf($srctemplatepath, array( @@ -351,8 +384,18 @@ class doc_generic_invoice_odt extends ModelePDFFactures //print html_entity_decode($odfHandler->__toString()); //print exit; - // Make substitutions - $tmparray=$this->get_substitutionarray_user($user,$outputlangs); + + // Make substitutions into odt + if ($newfreetext) + { + try { + $odfHandler->setVars('free_text', $newfreetext, true, 'UTF-8'); + } + catch(OdfException $e) + { + } + } + $tmparray=$this->get_substitutionarray_user($user,$outputlangs); //var_dump($tmparray); exit; foreach($tmparray as $key=>$value) { @@ -410,7 +453,7 @@ class doc_generic_invoice_odt extends ModelePDFFactures { } } - + // Replace tags of object $tmparray=$this->get_substitutionarray_object($object,$outputlangs); foreach($tmparray as $key=>$value) { @@ -429,7 +472,7 @@ class doc_generic_invoice_odt extends ModelePDFFactures { } } - + // Replace tags of lines try { $listlines = $odfHandler->setSegment('lines'); diff --git a/htdocs/includes/modules/facture/doc/pdf_crabe.modules.php b/htdocs/includes/modules/facture/doc/pdf_crabe.modules.php index e0804fe8ed2..f0fd65172ee 100755 --- a/htdocs/includes/modules/facture/doc/pdf_crabe.modules.php +++ b/htdocs/includes/modules/facture/doc/pdf_crabe.modules.php @@ -92,7 +92,7 @@ class pdf_crabe extends ModelePDFFactures // Defini position des colonnes $this->posxdesc=$this->marge_gauche+1; - $this->posxtva=113; + $this->posxtva=111; $this->posxup=126; $this->posxqty=145; $this->posxdiscount=162; @@ -165,22 +165,6 @@ class pdf_crabe extends ModelePDFFactures { $nblignes = sizeof($object->lines); - // Protection et encryption du pdf -/* if ($conf->global->PDF_SECURITY_ENCRYPTION) - { - if ($conf->global->MAIN_USE_FPDF) $pdf = new FPDI_Protection('P','mm',$this->format); - else $pdf = new FPDI('P','mm',$this->format); - $pdfrights = array('print'); // Ne permet que l'impression du document - if (empty($conf->global->MAIN_USE_FPDF)) $pdfrights[]='assemble'; - $pdfuserpass = ''; // Mot de passe pour l'utilisateur final - $pdfownerpass = NULL; // Mot de passe du proprietaire, cree aleatoirement si pas defini - $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass); - } - else - { - $pdf=new FPDI('P','mm',$this->format); - } -*/ $pdf=pdf_getInstance($this->format); if (class_exists('TCPDF')) @@ -242,7 +226,6 @@ class pdf_crabe extends ModelePDFFactures $pdf->SetDrawColor(192,192,192); //print $pdf->getStringHeight(200,'SPECIMEN',false,false); //print "$this->marge_gauche, $tab_top-1, $this->page_largeur-$this->marge_gauche-$this->marge_droite, $height_note+1";exit; - $pdf->Rect($this->marge_gauche, $tab_top-1, $this->page_largeur-$this->marge_gauche-$this->marge_droite, $height_note+1); $tab_height = $tab_height - $height_note; diff --git a/htdocs/includes/modules/facture/doc/pdf_oursin.modules.php b/htdocs/includes/modules/facture/doc/pdf_oursin.modules.php index f24a0e7b726..12cc1769374 100755 --- a/htdocs/includes/modules/facture/doc/pdf_oursin.modules.php +++ b/htdocs/includes/modules/facture/doc/pdf_oursin.modules.php @@ -93,7 +93,7 @@ class pdf_oursin extends ModelePDFFactures // Defini position des colonnes $this->posxdesc=$this->marge_gauche+1; - $this->posxtva=113; + $this->posxtva=111; $this->posxup=126; $this->posxqty=145; $this->posxdiscount=162; @@ -163,21 +163,6 @@ class pdf_oursin extends ModelePDFFactures if (file_exists($dir)) { - - // Protection et encryption du pdf -/* if ($conf->global->PDF_SECURITY_ENCRYPTION) - { - $pdf=new FPDI_Protection('P','mm',$this->format); - $pdfrights = array('print'); // Ne permet que l'impression du document - $pdfuserpass = ''; // Mot de passe pour l'utilisateur final - $pdfownerpass = NULL; // Mot de passe du propri�taire, cr�� al�atoirement si pas d�fini - $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass); - } - else - { - $pdf=new FPDI('P','mm',$this->format); - } -*/ $pdf=pdf_getInstance($this->format); if (class_exists('TCPDF')) diff --git a/htdocs/includes/modules/fichinter/pdf_soleil.modules.php b/htdocs/includes/modules/fichinter/pdf_soleil.modules.php index fd4a957b9b6..ad281e7f23a 100644 --- a/htdocs/includes/modules/fichinter/pdf_soleil.modules.php +++ b/htdocs/includes/modules/fichinter/pdf_soleil.modules.php @@ -127,20 +127,6 @@ class pdf_soleil extends ModelePDFFicheinter if (file_exists($dir)) { - // Protection et encryption du pdf -/* if ($conf->global->PDF_SECURITY_ENCRYPTION) - { - $pdf=new FPDI_Protection('P','mm',$this->format); - $pdfrights = array('print'); // Ne permet que l'impression du document - $pdfuserpass = ''; // Mot de passe pour l'utilisateur final - $pdfownerpass = NULL; // Mot de passe du proprietaire, cree aleatoirement si pas defini - $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass); - } - else - { - $pdf=new FPDI('P','mm',$this->format); - } -*/ $pdf=pdf_getInstance($this->format); if (class_exists('TCPDF')) diff --git a/htdocs/includes/modules/livraison/pdf/pdf_sirocco.modules.php b/htdocs/includes/modules/livraison/pdf/pdf_sirocco.modules.php index 294ed84feea..b6e724875f7 100644 --- a/htdocs/includes/modules/livraison/pdf/pdf_sirocco.modules.php +++ b/htdocs/includes/modules/livraison/pdf/pdf_sirocco.modules.php @@ -117,20 +117,6 @@ class pdf_sirocco extends ModelePDFDeliveryOrder if (file_exists($dir)) { - // Protection et encryption du pdf -/* if ($conf->global->PDF_SECURITY_ENCRYPTION) - { - $pdf=new FPDI_Protection('P','mm',$this->format); - $pdfrights = array('print'); // Ne permet que l'impression du document - $pdfuserpass = ''; // Mot de passe pour l'utilisateur final - $pdfownerpass = NULL; // Mot de passe du proprietaire, cree aleatoirement si pas defini - $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass); - } - else - { - $pdf=new FPDI('P','mm',$this->format); - } -*/ $pdf=pdf_getInstance($this->format); if (class_exists('TCPDF')) diff --git a/htdocs/includes/modules/livraison/pdf/pdf_typhon.modules.php b/htdocs/includes/modules/livraison/pdf/pdf_typhon.modules.php index ffc9b867005..a7e5b91dfbc 100644 --- a/htdocs/includes/modules/livraison/pdf/pdf_typhon.modules.php +++ b/htdocs/includes/modules/livraison/pdf/pdf_typhon.modules.php @@ -83,7 +83,7 @@ class pdf_typhon extends ModelePDFDeliveryOrder // Defini position des colonnes $this->posxdesc=$this->marge_gauche+1; $this->posxcomm=120; - $this->posxtva=121; + //$this->posxtva=111; $this->posxup=132; $this->posxqty=168; $this->posxdiscount=162; @@ -140,20 +140,6 @@ class pdf_typhon extends ModelePDFDeliveryOrder if (file_exists($dir)) { - // Protection et encryption du pdf -/* if ($conf->global->PDF_SECURITY_ENCRYPTION) - { - $pdf=new FPDI_Protection('P','mm',$this->format); - $pdfrights = array('print'); // Ne permet que l'impression du document - $pdfuserpass = ''; // Mot de passe pour l'utilisateur final - $pdfownerpass = NULL; // Mot de passe du proprietaire, cree aleatoirement si pas defini - $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass); - } - else - { - $pdf=new FPDI('P','mm',$this->format); - } -*/ $pdf=pdf_getInstance($this->format); if (class_exists('TCPDF')) diff --git a/htdocs/includes/modules/member/cards/pdf_standard.class.php b/htdocs/includes/modules/member/cards/pdf_standard.class.php index c1d14432ac3..c25d94355f7 100644 --- a/htdocs/includes/modules/member/cards/pdf_standard.class.php +++ b/htdocs/includes/modules/member/cards/pdf_standard.class.php @@ -397,21 +397,6 @@ class pdf_standard { } } - - // Protection et encryption du pdf -/* if ($conf->global->PDF_SECURITY_ENCRYPTION) - { - $pdf=new FPDI_Protection('P',$this->Tformat['metric'],$this->format); - $pdfrights = array('print'); // Ne permet que l'impression du document - $pdfuserpass = ''; // Mot de passe pour l'utilisateur final - $pdfownerpass = NULL; // Mot de passe du proprietaire, cree aleatoirement si pas defini - $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass); - } - else - { - $pdf=new FPDI('P',$this->Tformat['metric'],$this->format); - } -*/ $pdf=pdf_getInstance($this->format,$this->Tformat['metric']); if (class_exists('TCPDF')) diff --git a/htdocs/includes/modules/member/labels/pdf_standardlabel.class.php b/htdocs/includes/modules/member/labels/pdf_standardlabel.class.php index b51d8e13e07..46c7b063b18 100644 --- a/htdocs/includes/modules/member/labels/pdf_standardlabel.class.php +++ b/htdocs/includes/modules/member/labels/pdf_standardlabel.class.php @@ -376,21 +376,6 @@ class pdf_standardlabel { } } - - // Protection et encryption du pdf -/* if ($conf->global->PDF_SECURITY_ENCRYPTION) - { - $pdf=new FPDI_Protection('P',$this->Tformat['metric'],$this->format); - $pdfrights = array('print'); // Ne permet que l'impression du document - $pdfuserpass = ''; // Mot de passe pour l'utilisateur final - $pdfownerpass = NULL; // Mot de passe du proprietaire, cree aleatoirement si pas defini - $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass); - } - else - { - $pdf=new FPDI('P',$this->Tformat['metric'],$this->format); - } -*/ $pdf=pdf_getInstance($this->format,$this->Tformat['metric']); if (class_exists('TCPDF')) diff --git a/htdocs/includes/modules/project/pdf/pdf_baleine.modules.php b/htdocs/includes/modules/project/pdf/pdf_baleine.modules.php index c90cccb0dd9..a8483b52240 100644 --- a/htdocs/includes/modules/project/pdf/pdf_baleine.modules.php +++ b/htdocs/includes/modules/project/pdf/pdf_baleine.modules.php @@ -125,20 +125,6 @@ class pdf_baleine extends ModelePDFProjects if (file_exists($dir)) { - // Protection et encryption du pdf -/* if ($conf->global->PDF_SECURITY_ENCRYPTION) - { - $pdf=new FPDI_Protection('P','mm',$this->format); - $pdfrights = array('print'); // Ne permet que l'impression du document - $pdfuserpass = ''; // Mot de passe pour l'utilisateur final - $pdfownerpass = NULL; // Mot de passe du proprietaire, cree aleatoirement si pas defini - $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass); - } - else - { - $pdf=new FPDI('P','mm',$this->format); - } -*/ $pdf=pdf_getInstance($this->format); if (class_exists('TCPDF')) diff --git a/htdocs/includes/modules/propale/pdf_propale_azur.modules.php b/htdocs/includes/modules/propale/pdf_propale_azur.modules.php index dafcbe31e4f..c39973fd7a8 100644 --- a/htdocs/includes/modules/propale/pdf_propale_azur.modules.php +++ b/htdocs/includes/modules/propale/pdf_propale_azur.modules.php @@ -87,7 +87,7 @@ class pdf_propale_azur extends ModelePDFPropales // Defini position des colonnes $this->posxdesc=$this->marge_gauche+1; - $this->posxtva=113; + $this->posxtva=111; $this->posxup=126; $this->posxqty=145; $this->posxdiscount=162; diff --git a/htdocs/includes/modules/propale/pdf_propale_jaune.modules.php b/htdocs/includes/modules/propale/pdf_propale_jaune.modules.php index 49b1892bd84..a00ed488846 100644 --- a/htdocs/includes/modules/propale/pdf_propale_jaune.modules.php +++ b/htdocs/includes/modules/propale/pdf_propale_jaune.modules.php @@ -132,20 +132,6 @@ class pdf_propale_jaune extends ModelePDFPropales if (file_exists($dir)) { - // Protection et encryption du pdf -/* if ($conf->global->PDF_SECURITY_ENCRYPTION) - { - $pdf=new FPDI_Protection('P','mm',$this->format); - $pdfrights = array('print'); // Ne permet que l'impression du document - $pdfuserpass = ''; // Mot de passe pour l'utilisateur final - $pdfownerpass = NULL; // Mot de passe du proprietaire, cree aleatoirement si pas defini - $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass); - } - else - { - $pdf=new FPDI('P','mm',$this->format); - } -*/ $pdf=pdf_getInstance($this->format); if (class_exists('TCPDF')) diff --git a/htdocs/includes/modules/rapport/pdf_paiement.class.php b/htdocs/includes/modules/rapport/pdf_paiement.class.php index 9f72bdc6fa1..79bcae814e3 100644 --- a/htdocs/includes/modules/rapport/pdf_paiement.class.php +++ b/htdocs/includes/modules/rapport/pdf_paiement.class.php @@ -103,21 +103,6 @@ class pdf_paiement $year = sprintf("%04d",$year); $file = $dir . "/payments-".$year."-".$month.".pdf"; - // Protection et encryption du pdf -/* if ($conf->global->PDF_SECURITY_ENCRYPTION) - { - if ($conf->global->MAIN_USE_FPDF) $pdf = new FPDI_Protection('P','mm',$this->format); - else $pdf = new FPDI('P','mm',$this->format); - $pdfrights = array('print'); // Ne permet que l'impression du document - $pdfuserpass = ''; // Mot de passe pour l'utilisateur final - $pdfownerpass = NULL; // Mot de passe du proprietaire, cree aleatoirement si pas defini - $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass); - } - else - { - $pdf=new FPDI('P','mm',$this->format); - } -*/ $pdf=pdf_getInstance($this->format); if (class_exists('TCPDF')) diff --git a/htdocs/includes/modules/societe/doc/doc_generic_odt.modules.php b/htdocs/includes/modules/societe/doc/doc_generic_odt.modules.php index beb7cb91cd1..cb252f05931 100644 --- a/htdocs/includes/modules/societe/doc/doc_generic_odt.modules.php +++ b/htdocs/includes/modules/societe/doc/doc_generic_odt.modules.php @@ -158,7 +158,7 @@ class doc_generic_odt extends ModeleThirdPartyDoc $texte.= ''; // Scan directories - if (sizeof($listofdir)) $texte.=$langs->trans("NumberOfModelFilesFound").': '.sizeof($listoffiles); + if (sizeof($listofdir)) $texte.=$langs->trans("NumberOfModelFilesFound").': '.sizeof($listoffiles).''; $texte.= ''; diff --git a/htdocs/includes/modules/supplier_invoice/pdf/pdf_canelle.modules.php b/htdocs/includes/modules/supplier_invoice/pdf/pdf_canelle.modules.php index 3611f1f75b8..3fdb683e06f 100755 --- a/htdocs/includes/modules/supplier_invoice/pdf/pdf_canelle.modules.php +++ b/htdocs/includes/modules/supplier_invoice/pdf/pdf_canelle.modules.php @@ -80,7 +80,7 @@ class pdf_canelle extends ModelePDFSuppliersInvoices // Defini position des colonnes $this->posxdesc=$this->marge_gauche+1; - $this->posxtva=113; + $this->posxtva=111; $this->posxup=126; $this->posxqty=145; $this->posxdiscount=162; @@ -151,20 +151,6 @@ class pdf_canelle extends ModelePDFSuppliersInvoices { $nblignes = sizeof($object->lines); - // Protection et encryption du pdf -/* if ($conf->global->PDF_SECURITY_ENCRYPTION) - { - $pdf=new FPDI_Protection('P','mm',$this->format); - $pdfrights = array('print'); // Ne permet que l'impression du document - $pdfuserpass = ''; // Mot de passe pour l'utilisateur final - $pdfownerpass = NULL; // Mot de passe du proprietaire, cree aleatoirement si pas defini - $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass); - } - else - { - $pdf=new FPDI('P','mm',$this->format); - } -*/ $pdf=pdf_getInstance($this->format); if (class_exists('TCPDF')) diff --git a/htdocs/includes/modules/supplier_order/pdf/pdf_muscadet.modules.php b/htdocs/includes/modules/supplier_order/pdf/pdf_muscadet.modules.php index 741d4c4e67f..ed520033d75 100644 --- a/htdocs/includes/modules/supplier_order/pdf/pdf_muscadet.modules.php +++ b/htdocs/includes/modules/supplier_order/pdf/pdf_muscadet.modules.php @@ -81,7 +81,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders // Defini position des colonnes $this->posxdesc=$this->marge_gauche+1; - $this->posxtva=113; + $this->posxtva=111; $this->posxup=126; $this->posxqty=145; $this->posxdiscount=162; @@ -153,20 +153,6 @@ class pdf_muscadet extends ModelePDFSuppliersOrders { $nblignes = sizeof($object->lines); - // Protection et encryption du pdf -/* if ($conf->global->PDF_SECURITY_ENCRYPTION) - { - $pdf=new FPDI_Protection('P','mm',$this->format); - $pdfrights = array('print'); // Ne permet que l'impression du document - $pdfuserpass = ''; // Mot de passe pour l'utilisateur final - $pdfownerpass = NULL; // Mot de passe du proprietaire, cree aleatoirement si pas defini - $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass); - } - else - { - $pdf=new FPDI('P','mm',$this->format); - } -*/ $pdf=pdf_getInstance($this->format); if (class_exists('TCPDF')) diff --git a/htdocs/install/default.css b/htdocs/install/default.css index dcc953ce5b6..ed5237d940f 100644 --- a/htdocs/install/default.css +++ b/htdocs/install/default.css @@ -177,7 +177,7 @@ color: black; padding: 5px 5px 5px 5px; margin: 0em 0em 0em 0em; text-decoration:none; -font-size: 13px; +font-size: 12px; border-bottom: 1px solid #8CACBB; } @@ -198,3 +198,9 @@ div.visible { div.hidden { display: none; } + +ul { + margin: 0; + padding-top: 0; + padding-bottom: 0; +} diff --git a/htdocs/install/doctemplates/invoices/template_invoice.odt b/htdocs/install/doctemplates/invoices/template_invoice.odt index cbc74a9bf239bc10aa830ecc3398382a59c39635..c1693757a7cd03dbe58c9547825c00428a94736e 100644 GIT binary patch delta 23614 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"errors"); // You can force preselected values of the config step of Dolibarr by adding a file // install.forced.php into directory htdocs/install (This is the case with some installer -// lile DoliWamp, DoliMamp or DoliDeb. +// lile DoliWamp, DoliMamp or DoliBuntu. // We first init "forced values" to nothing. +if (! isset($force_install_noedit)) $force_install_noedit=''; if (! isset($force_install_type)) $force_install_type=''; if (! isset($force_install_port)) $force_install_port=''; if (! isset($force_install_database)) $force_install_database=''; @@ -121,7 +122,10 @@ if (! empty($force_install_message)) } ?> - name="main_dir"> + '; + print ''; + ?> trans("WithNoSlashAtTheEnd")."
";