News:

Looking for documentation? Take a look on our wiki

Main Menu

Remove vendor image from delivery note

Started by livekrimi, January 31, 2018, 22:35:51 PM

Previous topic - Next topic

livekrimi

Hi,

i uploaded a vendor image in the virtuemart backend and I want it to be visible only in e-mails and invoices, but not in delivery-note.

Is there any possibiliy to hide (or to change the size of) this image only in delivery-note?

The problem is that I need the userfields of delivery-note to fit to my c3-envelope.

I tried several changes in nearly all php-files, but did'nt get to fix it.

Thank you!

PS: I have the newest joomla- and virtuemart-version.

jenkinhill

I guess you could edit and override components/com_virtuemart/views/invoice/tmpl/invoice.php with code to check if  it is an invoice, and if not don't show the image.
Kelvyn
Lowestoft, Suffolk, UK

Retired from forum life November 2023

Please mention your VirtueMart, Joomla and PHP versions when asking a question in this forum

livekrimi

Hi,

thanks for your reply.

I already deleted the whole invoice.php to find out if the vendor image depends on this file.

But nothing happend. Every part of invoice and delivery-notice was gone, but the header still there.


livekrimi

Has anyone an idea?

I found this php-file (vmpdf.php), is that one maybe a solution?

<?php
defined
('_JEXEC') or die('');
/**
 * abstract controller class containing get,store,delete,publish and pagination
 *
 *
 * This class provides the functions for the calculatoins
 *
 * @package VirtueMart
 * @subpackage Helpers
 * @author Max Milbers
 * @copyright Copyright (c) 2011 - 2014 VirtueMart Team. All rights reserved.
 * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
 * VirtueMart is free software. This version may have been modified pursuant
 * to the GNU General Public License, and as distributed it includes or
 * is derivative of works licensed under the GNU General Public License or
 * other free or open source software licenses.
 * See /administrator/components/com_virtuemart/COPYRIGHT.php for copyright notices and details.
 *
 * http://virtuemart.net
 */

defined('DS') or define('DS'DIRECTORY_SEPARATOR);
if (!
class_exists'VmConfig' )) require(JPATH_ROOT .'/administrator/components/com_virtuemart/helpers/config.php');
VmConfig::loadConfig();
if(!
class_exists('VmModel')) require(VMPATH_ADMIN.DS.'helpers'.DS.'vmmodel.php');

if(!
class_exists('VmImage')) require(VMPATH_ADMIN.DS.'helpers'.DS.'image.php');

class 
VmPdf {



/** Function to create a nice vendor-styled PDF for the output of the given view.
    The $path and $dest arguments are directly passed on to TCPDF::Output. 
    To create a PDF directly from a given HTML (i.e. not through a view), one
    can directly use the VmVendorPDF class, see VirtueMartControllerInvoice::samplePDF */
static function createVmPdf($view$path=''$dest='F'$meta=array()) {
if(!$view){
// TODO: use some default view???
return;
}

if(!class_exists('VmVendorPDF')){
vmError('vmPdf: For the pdf, you must install the tcpdf library at '.VMPATH_LIBS.DS.'tcpdf');
return 0;
}

$pdf = new VmVendorPDF();
if (isset($meta['title'])) $pdf->SetTitle($meta['title']);
if (isset($meta['subject'])) $pdf->SetSubject($meta['subject']);
if (isset($meta['keywords'])) $pdf->SetKeywords($meta['keywords']);
// Make the formatter available, just in case some specialized view wants/needs it
$view->pdf_formatter $pdf;
$view->isPdf true;
$view->print false;

ob_start();
$view->display();
$html ob_get_contents();
ob_end_clean();

$pdf->AddPage();
$pdf->PrintContents($html);

// Close and output PDF document
// This method has several options, check the source code documentation for more information.
$pdf->Output($path$dest);

return $path;
}
}


if(!
file_exists(VMPATH_LIBS.DS.'tcpdf'.DS.'tcpdf.php')){
vmError('VmPDF helper: For the PDF invoice and other PDF business letters, you must install the tcpdf library at '.VMPATH_LIBS.DS.'tcpdf');
} else {

if(!class_exists('TCPDF'))require(VMPATH_LIBS.DS.'tcpdf'.DS.'tcpdf.php');
// Extend the TCPDF class to create custom Header and Footer as configured in the Backend
class VmVendorPDF extends TCPDF {
var $vendor 0;
var $vendorImage '';
var $vendorAddress '';
var $css '';
var $virtuemart_vendor_id 1;
var $tcpdf6 false;

public function __construct() {
// Load the vendor, so we have the data for the header/footer...
// The images are NOT loaded by default, so do it manually, just in case
$vendorModel VmModel::getModel('vendor');
$this->vendor $vendorModel->getVendor($this->virtuemart_vendor_id);
$vendorModel->addImages($this->vendor,1);
$this->vendor->vendorFields $vendorModel->getVendorAddressFields($this->virtuemart_vendor_id);

parent::__construct($this->vendor->vendor_letter_orientation'mm'$this->vendor->vendor_letter_format);

$this->css $this->vendor->vendor_letter_css;

// set document information
$this->SetCreator(vmText::_('COM_VIRTUEMART_PDF_CREATOR'));

$this->vendorImage '';
if(empty($this->vendor->images[0])){
vmError('Vendor image given path empty ');
} else if(empty($this->vendor->images[0]->file_url_folder) or empty($this->vendor->images[0]->file_name) or empty($this->vendor->images[0]->file_extension) ){
vmError('Vendor image given image is not complete '.$this->vendor->images[0]->file_url_folder.$this->vendor->images[0]->file_name.'.'.$this->vendor->images[0]->file_extension);
/*} else if(!empty($this->vendor->images[0]->file_extension) and strtolower($this->vendor->images[0]->file_extension)=='png'){
vmError('Warning extension of the vendor image '.$this->vendor->images[0]->file_name.'is a png, tpcdf has problems with that in the header, choose a jpg or gif');*/
} else {
$imagePath str_replace('/',DS$this->vendor->images[0]->file_url_folder.$this->vendor->images[0]->file_name.'.'.$this->vendor->images[0]->file_extension);
if(!file_exists(VMPATH_ROOT DS $imagePath)){
vmError('Vendor image missing '.$imagePath);
} else {
$this->vendorImage=$imagePath;
}
}
// Generate PDF header
if (!class_exists ('JFile')) {
require(VMPATH_LIBS DS 'joomla' DS 'filesystem' DS 'file.php');
}
$this->tcpdf6 JFile::exists(VMPATH_LIBS.DS.'tcpdf'.DS.'include'.DS.'tcpdf_colors.php');
if($this->tcpdf6){
$this->tcpdf6 method_exists('TCPDF','getAllSpotColors');
}
if($this->tcpdf6){
$getAllSpotColors TCPDF::getAllSpotColors();
$vlfooterlcolor TCPDF_COLORS::convertHTMLColorToDec($this->vendor->vendor_letter_footer_line_color,$getAllSpotColors);
} else {
$vlfooterlcolor $this->convertHTMLColorToDec($this->vendor->vendor_letter_footer_line_color);
}

$this->setHeaderData(($this->vendor->vendor_letter_header_image?$this->vendorImage:''),
($this->vendor->vendor_letter_header_image?$this->vendor->vendor_letter_header_imagesize:0),
''$this->vendor->vendor_letter_header_html,
array(0,0,0),$vlfooterlcolor );
$this->vendorAddress shopFunctionsF::renderVendorAddress($this->vendor->virtuemart_vendor_id"<br/>");
// Trim the final <br/> from the address, which is inserted by renderVendorAddress automatically!
if (substr($this->vendorAddress, -55) == '<br/>') {
$this->vendorAddress substr($this->vendorAddress0, -5);
}

$vmFont=$this->vendor->vendor_letter_font;
$this->SetFont($vmFont''$this->vendor->vendor_letter_font_size'''false');                 
$this->setHeaderFont(Array($vmFont''$this->vendor->vendor_letter_header_font_size ));
$this->setFooterFont(Array($vmFont''$this->vendor->vendor_letter_footer_font_size ));

// Remove all vertical margins and padding from the HTML cells (default is excessive padding):
$this->SetCellPadding(0);
$tagvs = array('p' => array(=> array('h' => 0'n' => 0), => array('h' => 0'n' => 0)),
'div' => array(=> array('h' => 0'n' => 0), => array('h' => 0'n' => 0)),
'h1' => array(=> array('h' => 0'n' => 0), => array('h' => 0'n' => 0)),
'h2' => array(=> array('h' => 0'n' => 0), => array('h' => 0'n' => 0)),
'h3' => array(=> array('h' => 0'n' => 0), => array('h' => 0'n' => 0)),
'table' => array(=> array('h' => 0'n' => 0), => array('h' => 0'n' => 0)),
);
$this->setHtmlVSpace($tagvs);

// set default font subsetting mode
$this->setFontSubsetting(true);
// set default monospaced font
//  $this->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);

//set margins
$this->SetMargins($this->vendor->vendor_letter_margin_left$this->vendor->vendor_letter_margin_top$this->vendor->vendor_letter_margin_right);
$this->SetHeaderMargin($this->vendor->vendor_letter_margin_header);
$this->SetFooterMargin($this->vendor->vendor_letter_margin_footer);
$this->SetAutoPageBreak(TRUE$this->vendor->vendor_letter_margin_bottom);

//set image scale factor
$this->setImageScale(PDF_IMAGE_SCALE_RATIO);

//TODO include the right file (in libraries/tcpdf/config/lang set some language-dependent strings
$l='';
$this->setLanguageArray($l);

}


/** Replace variables like {vm:page}, {vm:pagecount} etc. in the given string 
 */
function replace_variables($txt) {
// TODO: Implement more Placeholders (ordernr, invoicenr, etc.)
// Use PageNo rather than getAliasNumPage, since the alias will be misaligned (spaced like the {:npn:} text rather than the final number)
$txt str_replace('{vm:pagenum}'$this->PageNo(), $txt);
// Can't use getNumPages, because when this is evaluated, we don't know the final number of pages (getNumPages is always equal to the current page numbe)
$txt str_replace('{vm:pagecount}'$this->getAliasNbPages(), $txt);
$txt str_replace('{vm:vendorname}'$this->vendor->vendor_store_name$txt);
$imgrepl='';
if (!empty($this->vendor->images)) {
$img $this->vendor->images[0];
$imgrepl "<div class=\"vendor-image\">".$img->displayIt($img->file_url,'','',false''falsefalse)."</div>";
}
$txt str_replace('{vm:vendorimage}'$imgrepl$txt);
$txt str_replace('{vm:vendoraddress}'$this->vendorAddress$txt);
$txt str_replace('{vm:vendorlegalinfo}'$this->vendor->vendor_legal_info$txt);
$txt str_replace('{vm:vendordescription}'$this->vendor->vendor_store_desc$txt);
$txt str_replace('{vm:tos}'$this->vendor->vendor_terms_of_service$txt);
return "$txt";
}

public function PrintContents($html) {
$contents $this->replace_variables ($html);
$this->writeHTMLCell($w=0$h=0$x=''$y=''$contents$border=0$ln=1$fill=0$reseth=true$align=''$autopadding=true);
}

public function Footer() {

if ($this->vendor->vendor_letter_footer == 1) {
$footertxt '<style>' $this->css '</style>';
$footertxt .= '<div id="vmdoc-footer" class="vmdoc-footer">' $this->replace_variables($this->vendor->vendor_letter_footer_html) . '</div>';

$currentCHRF $this->getCellHeightRatio();
$this->setCellHeightRatio($this->vendor->vendor_letter_footer_cell_height_ratio);

if (!class_exists ('JFile')) {
require(VMPATH_LIBS DS 'joomla' DS 'filesystem' DS 'file.php');
}
$this->tcpdf6 JFile::exists(VMPATH_LIBS.DS.'tcpdf'.DS.'include'.DS.'tcpdf_colors.php');
if($this->tcpdf6){
$this->tcpdf6 method_exists('TCPDF','getAllSpotColors');
}
if($this->tcpdf6){
$getAllSpotColors TCPDF::getAllSpotColors();
$vlfooterlcolor TCPDF_COLORS::convertHTMLColorToDec($this->vendor->vendor_letter_footer_line_color,$getAllSpotColors);
} else {
$vlfooterlcolor $this->convertHTMLColorToDec($this->vendor->vendor_letter_footer_line_color);
}

//set style for cell border
$border 0;
if ($this->vendor->vendor_letter_footer_line == 1) {
$line_width 0.85 $this->getScaleFactor();
$this->SetLineStyle(array('width' => $line_width'cap' => 'butt''join' => 'miter''dash' => 0'color' => $vlfooterlcolor));
$border 'T';
}

// TODO: Implement cell_height
//  $cell_height = round(($this->getCellHeightRatio() * $footerfont[2]) / $this->getScaleFactor(), 2);
$cell_height=1;


$this->writeHTMLCell(0$cell_height''''$footertxt$border10true''true);
// Set it back
$this->setCellHeightRatio($currentCHRF);
}
}

public function Header() {

if ($this->vendor->vendor_letter_header != 1) return;

if ($this->header_xobjid === false) {
// start a new XObject Template
$this->header_xobjid $this->startTemplate($this->w$this->tMargin);
$headerfont $this->getHeaderFont();
$headerdata $this->getHeaderData();
$this->$this->header_margin;

$headertxt '<style>' $this->css '</style>';
$headertxt .= '<div id="vmdoc-header" class="vmdoc-header">' $this->replace_variables($headerdata['string']) . '</div>';
$currentCHRF $this->getCellHeightRatio();
$this->setCellHeightRatio($this->vendor->vendor_letter_header_cell_height_ratio);
$this->tcpdf6 JFile::exists(VMPATH_LIBS.DS.'tcpdf'.DS.'include'.DS.'tcpdf_images.php');

if ($this->rtl) {
$this->$this->$this->original_rMargin;
} else {
$this->$this->original_lMargin;
}
$header_x = (($this->getRTL())?($this->original_rMargin):($this->original_lMargin));
$cw $this->$this->original_lMargin $this->original_rMargin;
if (($headerdata['logo']) AND ($headerdata['logo'] != K_BLANK_IMAGE)) {

if (!class_exists ('JFile')) {
require(VMPATH_LIBS DS 'joomla' DS 'filesystem' DS 'file.php');
}
if($this->tcpdf6){
if (!class_exists ('TCPDF_IMAGES')) {
require(VMPATH_LIBS.DS.'tcpdf'.DS.'include'.DS.'tcpdf_images.php');
}

$imgtype TCPDF_IMAGES::getImageFileType(VMPATH_ROOT.DS.$headerdata['logo']);
} else {
$imgtype $this->getImageFileType(VMPATH_ROOT.DS.$headerdata['logo']);
}

if (($imgtype == 'eps') OR ($imgtype == 'ai')) {
$this->ImageEps(VMPATH_ROOT.DS.$headerdata['logo'], ''''$headerdata['logo_width']);
} elseif ($imgtype == 'svg') {
$this->ImageSVG(VMPATH_ROOT.DS.$headerdata['logo'], ''''$headerdata['logo_width']);
} else {
$this->Image(VMPATH_ROOT.DS.$headerdata['logo'], ''''$headerdata['logo_width']);
}
$imgy $this->getImageRBY();
$header_x +=  ($headerdata['logo_width'] * 1.1);
$cw -= ($headerdata['logo_width'] * 1.1);
} else {
$imgy $this->y;
}

// set starting margin for text data cell
$this->SetTextColorArray($this->header_text_color);
// header string
$this->SetFont($headerfont[0], $headerfont[1], $headerfont[2]);
$this->SetX($header_x);

$this->writeHTMLCell($cw0$this->x$this->header_margin$headertxt''2falsetrue''true);
// print an ending header line
if ($this->vendor->vendor_letter_header_line == 1) {
if($this->tcpdf6){
$getAllSpotColors TCPDF::getAllSpotColors();
$vlheaderlcolor TCPDF_COLORS::convertHTMLColorToDec($this->vendor->vendor_letter_header_line_color,$getAllSpotColors);
} else {
$vlheaderlcolor $this->convertHTMLColorToDec($this->vendor->vendor_letter_header_line_color);
}
$this->SetLineStyle(array('width' => 0.85 $this->k'cap' => 'butt''join' => 'miter''dash' => 0'color' => $vlheaderlcolor));
$this->SetY(max($imgy,$this->y));
if ($this->rtl) {
$this->SetX($this->original_rMargin);
} else {
$this->SetX($this->original_lMargin);
}
$this->Cell(($this->$this->original_lMargin $this->original_rMargin), 0'''T'0'C');
}
$this->setCellHeightRatio($currentCHRF);
$this->endTemplate();
}
// print header template
$x 0;
$dx 0;
if (!$this->header_xobj_autoreset AND $this->booklet AND (($this->page 2) == 0)) {
// adjust margins for booklet mode
$dx = ($this->original_lMargin $this->original_rMargin);
}
if ($this->rtl) {
$x $this->$dx;
} else {
$x $dx;
}
$this->printTemplate($this->header_xobjid$x000''''false);
if ($this->header_xobj_autoreset) {
// reset header xobject template at each page
$this->header_xobjid false;
}
}

}

}