Merge pull request #23695 from BB2A/FIX---Error-to-générate-product-doc---NEW---Add-photo-on-product-doc
FIX - Error to générate product doc - NEW - Add photo on product doc
This commit is contained in:
commit
0416820abf
@ -1,5 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2017 Laurent Destailleur <eldy@products.sourceforge.net>
|
/* Copyright (C) 2017 Laurent Destailleur <eldy@products.sourceforge.net>
|
||||||
|
* Copyright (C) 2023 Anthony Berton <anthony.berton@bb2a.fr>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -209,10 +210,10 @@ class pdf_standard extends ModelePDFProduct
|
|||||||
$pdf->SetDrawColor(128, 128, 128);
|
$pdf->SetDrawColor(128, 128, 128);
|
||||||
|
|
||||||
$pdf->SetTitle($outputlangs->convToOutputCharset($object->ref));
|
$pdf->SetTitle($outputlangs->convToOutputCharset($object->ref));
|
||||||
$pdf->SetSubject($outputlangs->transnoentities("Order"));
|
$pdf->SetSubject($outputlangs->transnoentities("Product"));
|
||||||
$pdf->SetCreator("Dolibarr ".DOL_VERSION);
|
$pdf->SetCreator("Dolibarr ".DOL_VERSION);
|
||||||
$pdf->SetAuthor($outputlangs->convToOutputCharset($user->getFullName($outputlangs)));
|
$pdf->SetAuthor($outputlangs->convToOutputCharset($user->getFullName($outputlangs)));
|
||||||
$pdf->SetKeyWords($outputlangs->convToOutputCharset($object->ref)." ".$outputlangs->transnoentities("Order")." ".$outputlangs->convToOutputCharset($object->thirdparty->name));
|
$pdf->SetKeyWords($outputlangs->convToOutputCharset($object->ref)." ".$outputlangs->transnoentities("Product"));
|
||||||
if (getDolGlobalString('MAIN_DISABLE_PDF_COMPRESSION')) {
|
if (getDolGlobalString('MAIN_DISABLE_PDF_COMPRESSION')) {
|
||||||
$pdf->SetCompression(false);
|
$pdf->SetCompression(false);
|
||||||
}
|
}
|
||||||
@ -242,6 +243,53 @@ class pdf_standard extends ModelePDFProduct
|
|||||||
$pdf->writeHTMLCell(190, 3, $this->marge_gauche, $tab_top, dol_htmlentitiesbr($object->label), 0, 1);
|
$pdf->writeHTMLCell(190, 3, $this->marge_gauche, $tab_top, dol_htmlentitiesbr($object->label), 0, 1);
|
||||||
$nexY = $pdf->GetY();
|
$nexY = $pdf->GetY();
|
||||||
|
|
||||||
|
// Show photo
|
||||||
|
if (getDolGlobalInt('PRODUCT_USE_OLD_PATH_FOR_PHOTO')) {
|
||||||
|
$pdir[0] = get_exdir($object->id, 2, 0, 0, $object, 'product').$object->id."/photos/";
|
||||||
|
$pdir[1] = get_exdir(0, 0, 0, 0, $object, 'product').dol_sanitizeFileName($object->ref).'/';
|
||||||
|
} else {
|
||||||
|
$pdir[0] = get_exdir(0, 0, 0, 0, $object, 'product'); // default
|
||||||
|
$pdir[1] = get_exdir($object->id, 2, 0, 0, $object, 'product').$object->id."/photos/"; // alternative
|
||||||
|
}
|
||||||
|
|
||||||
|
$arephoto = false;
|
||||||
|
foreach ($pdir as $midir) {
|
||||||
|
if (!$arephoto) {
|
||||||
|
if ($conf->entity != $object->entity) {
|
||||||
|
$dir = $conf->product->multidir_output[$object->entity].'/'.$midir; //Check repertories of current entities
|
||||||
|
} else {
|
||||||
|
$dir = $conf->product->dir_output.'/'.$midir; //Check repertory of the current product
|
||||||
|
}
|
||||||
|
foreach ($object->liste_photos($dir, 1) as $key => $obj) {
|
||||||
|
if (!getDolGlobalInt('CAT_HIGH_QUALITY_IMAGES')) { // If CAT_HIGH_QUALITY_IMAGES not defined, we use thumb if defined and then original photo
|
||||||
|
if ($obj['photo_vignette']) {
|
||||||
|
$filename = $obj['photo_vignette'];
|
||||||
|
} else {
|
||||||
|
$filename = $obj['photo'];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$filename = $obj['photo'];
|
||||||
|
}
|
||||||
|
$realpath = $dir.$filename;
|
||||||
|
$arephoto = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Define size of image if we need it
|
||||||
|
$imglinesize = array();
|
||||||
|
if (!empty($realpath) && $arephoto) {
|
||||||
|
$imgsize = pdf_getSizeForImage($realpath);
|
||||||
|
$imgsizewidth = $imgsize['width'] + 20;
|
||||||
|
$imgsizeheight = $imgsize['height'] + 20;
|
||||||
|
|
||||||
|
$midelpage = ($this->page_largeur - $this->marge_gauche - $this->marge_droite) / 2;
|
||||||
|
$posxphoto = $midelpage + ($midelpage / 2) - ($imgsizewidth / 2);
|
||||||
|
$posyphoto = $tab_top - 1;
|
||||||
|
$pdf->Image($realpath, $posxphoto, $posyphoto, $imgsizewidth, $imgsizeheight, '', '', '', 2, 300); // Use 300 dpi
|
||||||
|
$nexyafterphoto = $tab_top + $imgsizeheight;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Description
|
||||||
$pdf->SetFont('', '', $default_font_size);
|
$pdf->SetFont('', '', $default_font_size);
|
||||||
$pdf->writeHTMLCell(190, 3, $this->marge_gauche, $nexY, dol_htmlentitiesbr($object->description), 0, 1);
|
$pdf->writeHTMLCell(190, 3, $this->marge_gauche, $nexY, dol_htmlentitiesbr($object->description), 0, 1);
|
||||||
$nexY = $pdf->GetY();
|
$nexY = $pdf->GetY();
|
||||||
@ -276,30 +324,22 @@ class pdf_standard extends ModelePDFProduct
|
|||||||
$nexY = $pdf->GetY();
|
$nexY = $pdf->GetY();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$tab_top = 88;
|
||||||
|
if (!empty($nexyafterphoto) && $nexyafterphoto > $tab_top) {
|
||||||
|
$tab_top = $nexyafterphoto;
|
||||||
|
}
|
||||||
|
|
||||||
// Show notes
|
// Show notes
|
||||||
// TODO There is no public note on product yet
|
// TODO There is no public note on product yet
|
||||||
$notetoshow = empty($object->note_public) ? '' : $object->note_public;
|
$notetoshow = empty($object->note_public) ? '' : $object->note_public;
|
||||||
if (!empty($conf->global->MAIN_ADD_SALE_REP_SIGNATURE_IN_NOTE)) {
|
|
||||||
// Get first sale rep
|
|
||||||
if (is_object($object->thirdparty)) {
|
|
||||||
$salereparray = $object->thirdparty->getSalesRepresentatives($user);
|
|
||||||
$salerepobj = new User($this->db);
|
|
||||||
$salerepobj->fetch($salereparray[0]['id']);
|
|
||||||
if (!empty($salerepobj->signature)) {
|
|
||||||
$notetoshow = dol_concatdesc($notetoshow, $salerepobj->signature);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ($notetoshow) {
|
if ($notetoshow) {
|
||||||
$substitutionarray = pdf_getSubstitutionArray($outputlangs, null, $object);
|
$substitutionarray = pdf_getSubstitutionArray($outputlangs, null, $object);
|
||||||
complete_substitutions_array($substitutionarray, $outputlangs, $object);
|
complete_substitutions_array($substitutionarray, $outputlangs, $object);
|
||||||
$notetoshow = make_substitutions($notetoshow, $substitutionarray, $outputlangs);
|
$notetoshow = make_substitutions($notetoshow, $substitutionarray, $outputlangs);
|
||||||
$notetoshow = convertBackOfficeMediasLinksToPublicLinks($notetoshow);
|
$notetoshow = convertBackOfficeMediasLinksToPublicLinks($notetoshow);
|
||||||
|
|
||||||
$tab_top = 88;
|
|
||||||
|
|
||||||
$pdf->SetFont('', '', $default_font_size - 1);
|
$pdf->SetFont('', '', $default_font_size - 1);
|
||||||
$pdf->writeHTMLCell(190, 3, $this->posxdesc - 1, $tab_top, dol_htmlentitiesbr($notetoshow), 0, 1);
|
$pdf->writeHTMLCell(190, 3, $this->marge_gauche - 1, $tab_top, dol_htmlentitiesbr($notetoshow), 0, 1);
|
||||||
$nexY = $pdf->GetY();
|
$nexY = $pdf->GetY();
|
||||||
$height_note = $nexY - $tab_top;
|
$height_note = $nexY - $tab_top;
|
||||||
|
|
||||||
@ -673,6 +713,9 @@ class pdf_standard extends ModelePDFProduct
|
|||||||
{
|
{
|
||||||
global $conf, $langs, $hookmanager;
|
global $conf, $langs, $hookmanager;
|
||||||
|
|
||||||
|
$ltrdirection = 'L';
|
||||||
|
if ($outputlangs->trans("DIRECTION") == 'rtl') $ltrdirection = 'R';
|
||||||
|
|
||||||
// Load traductions files required by page
|
// Load traductions files required by page
|
||||||
$outputlangs->loadLangs(array("main", "propal", "companies", "bills", "orders"));
|
$outputlangs->loadLangs(array("main", "propal", "companies", "bills", "orders"));
|
||||||
|
|
||||||
@ -687,34 +730,47 @@ class pdf_standard extends ModelePDFProduct
|
|||||||
pdf_pagehead($pdf, $outputlangs, $this->page_hauteur);
|
pdf_pagehead($pdf, $outputlangs, $this->page_hauteur);
|
||||||
|
|
||||||
// Show Draft Watermark
|
// Show Draft Watermark
|
||||||
if ($object->statut == 0 && getDolGlobalString('COMMANDE_DRAFT_WATERMARK')) {
|
if ($object->statut == 0 && getDolGlobalString('PRODUCT_DRAFT_WATERMARK')) {
|
||||||
pdf_watermark($pdf, $outputlangs, $this->page_hauteur, $this->page_largeur, 'mm', getDolGlobalString('COMMANDE_DRAFT_WATERMARK'));
|
pdf_watermark($pdf, $outputlangs, $this->page_hauteur, $this->page_largeur, 'mm', getDolGlobalString('COMMANDE_DRAFT_WATERMARK'));
|
||||||
}
|
}
|
||||||
|
|
||||||
$pdf->SetTextColor(0, 0, 60);
|
$pdf->SetTextColor(0, 0, 60);
|
||||||
$pdf->SetFont('', 'B', $default_font_size + 3);
|
$pdf->SetFont('', 'B', $default_font_size + 3);
|
||||||
|
|
||||||
|
$w = 100;
|
||||||
|
|
||||||
$posy = $this->marge_haute;
|
$posy = $this->marge_haute;
|
||||||
$posx = $this->page_largeur - $this->marge_droite - 100;
|
$posx = $this->page_largeur - $this->marge_droite - 100;
|
||||||
|
|
||||||
$pdf->SetXY($this->marge_gauche, $posy);
|
$pdf->SetXY($this->marge_gauche, $posy);
|
||||||
|
|
||||||
// Logo
|
// Logo
|
||||||
$logo = $conf->mycompany->dir_output.'/logos/'.$this->emetteur->logo;
|
if (!getDolGlobalInt('PDF_DISABLE_MYCOMPANY_LOGO')) {
|
||||||
if ($this->emetteur->logo) {
|
if ($this->emetteur->logo) {
|
||||||
|
$logodir = $conf->mycompany->dir_output;
|
||||||
|
if (!empty($conf->mycompany->multidir_output[$object->entity])) {
|
||||||
|
$logodir = $conf->mycompany->multidir_output[$object->entity];
|
||||||
|
}
|
||||||
|
if (!getDolGlobalInt('MAIN_PDF_USE_LARGE_LOGO')) {
|
||||||
|
$logo = $logodir.'/logos/thumbs/'.$this->emetteur->logo_small;
|
||||||
|
} else {
|
||||||
|
$logo = $logodir.'/logos/'.$this->emetteur->logo;
|
||||||
|
}
|
||||||
if (is_readable($logo)) {
|
if (is_readable($logo)) {
|
||||||
$height = pdf_getHeightForLogo($logo);
|
$height = pdf_getHeightForLogo($logo);
|
||||||
$pdf->Image($logo, $this->marge_gauche, $posy, 0, $height); // width=0 (auto)
|
$pdf->Image($logo, $this->marge_gauche, $posy, 0, $height); // width=0 (auto)
|
||||||
} else {
|
} else {
|
||||||
$pdf->SetTextColor(200, 0, 0);
|
$pdf->SetTextColor(200, 0, 0);
|
||||||
$pdf->SetFont('', 'B', $default_font_size - 2);
|
$pdf->SetFont('', 'B', $default_font_size - 2);
|
||||||
$pdf->MultiCell(100, 3, $outputlangs->transnoentities("ErrorLogoFileNotFound", $logo), 0, 'L');
|
$pdf->MultiCell($w, 3, $outputlangs->transnoentities("ErrorLogoFileNotFound", $logo), 0, 'L');
|
||||||
$pdf->MultiCell(100, 3, $outputlangs->transnoentities("ErrorGoToGlobalSetup"), 0, 'L');
|
$pdf->MultiCell($w, 3, $outputlangs->transnoentities("ErrorGoToGlobalSetup"), 0, 'L');
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$text = $this->emetteur->name;
|
$text = $this->emetteur->name;
|
||||||
$pdf->MultiCell(100, 4, $outputlangs->convToOutputCharset($text), 0, 'L');
|
$pdf->MultiCell($w, 4, $outputlangs->convToOutputCharset($text), 0, $ltrdirection);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
$pdf->SetFont('', 'B', $default_font_size + 3);
|
$pdf->SetFont('', 'B', $default_font_size + 3);
|
||||||
$pdf->SetXY($posx, $posy);
|
$pdf->SetXY($posx, $posy);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user