FIX Some troubles into weight and volume calculation when unit differs.

NEW Introduce a function showDimensionInBestUnit
This commit is contained in:
Laurent Destailleur 2016-02-25 13:46:38 +01:00
parent b46c23ab35
commit a95240e33d
7 changed files with 316 additions and 157 deletions

View File

@ -3408,6 +3408,42 @@ function price2num($amount,$rounding='',$alreadysqlnb=0)
return $amount; return $amount;
} }
/**
* Output a dimension with best unit
* @param float $dimension Dimension
* @param int $unit Unit of dimension (0, -3, ...)
* @param string $type 'weight', 'volume', ...
*/
function showDimensionInBestUnit($dimension, $unit, $type, $outputlangs)
{
if ($dimension < 1/10000)
{
$dimension = $dimension * 1000000;
$unit = $unit - 6;
}
elseif ($dimension < 1/10)
{
$dimension = $dimension * 1000;
$unit = $unit - 3;
}
elseif ($dimension > 100000000)
{
$dimension = $dimension / 1000000;
$unit = $unit + 6;
}
elseif ($dimension > 100000)
{
$dimension = $dimension / 1000;
$unit = $unit + 3;
}
$ret=price($dimension, 0, $outputlangs, 0, 0).' '.measuring_units_string($unit, $type);
return $ret;
}
/** /**
* Return localtax rate for a particular vat, when selling a product with vat $vatrate, from a $thirdparty_buyer to a $thirdparty_seller * Return localtax rate for a particular vat, when selling a product with vat $vatrate, from a $thirdparty_buyer to a $thirdparty_seller
* Note: This function applies same rules than get_default_tva * Note: This function applies same rules than get_default_tva

View File

@ -337,7 +337,7 @@ function show_stats_for_company($product,$socid)
* @param int $unit Unit key (-3,0,3,98,99...) * @param int $unit Unit key (-3,0,3,98,99...)
* @param string $measuring_style Style of unit: weight, volume,... * @param string $measuring_style Style of unit: weight, volume,...
* @return string Unit string * @return string Unit string
* @see load_measuring_units * @see formproduct->load_measuring_units
*/ */
function measuring_units_string($unit,$measuring_style='') function measuring_units_string($unit,$measuring_style='')
{ {
@ -346,41 +346,41 @@ function measuring_units_string($unit,$measuring_style='')
$measuring_units=array(); $measuring_units=array();
if ($measuring_style == 'weight') if ($measuring_style == 'weight')
{ {
$measuring_units[3] = $langs->trans("WeightUnitton"); $measuring_units[3] = $langs->transnoentitiesnoconv("WeightUnitton");
$measuring_units[0] = $langs->trans("WeightUnitkg"); $measuring_units[0] = $langs->transnoentitiesnoconv("WeightUnitkg");
$measuring_units[-3] = $langs->trans("WeightUnitg"); $measuring_units[-3] = $langs->transnoentitiesnoconv("WeightUnitg");
$measuring_units[-6] = $langs->trans("WeightUnitmg"); $measuring_units[-6] = $langs->transnoentitiesnoconv("WeightUnitmg");
$measuring_units[99] = $langs->trans("WeightUnitpound"); $measuring_units[99] = $langs->transnoentitiesnoconv("WeightUnitpound");
} }
else if ($measuring_style == 'size') else if ($measuring_style == 'size')
{ {
$measuring_units[0] = $langs->trans("SizeUnitm"); $measuring_units[0] = $langs->transnoentitiesnoconv("SizeUnitm");
$measuring_units[-1] = $langs->trans("SizeUnitdm"); $measuring_units[-1] = $langs->transnoentitiesnoconv("SizeUnitdm");
$measuring_units[-2] = $langs->trans("SizeUnitcm"); $measuring_units[-2] = $langs->transnoentitiesnoconv("SizeUnitcm");
$measuring_units[-3] = $langs->trans("SizeUnitmm"); $measuring_units[-3] = $langs->transnoentitiesnoconv("SizeUnitmm");
$measuring_units[98] = $langs->trans("SizeUnitfoot"); $measuring_units[98] = $langs->transnoentitiesnoconv("SizeUnitfoot");
$measuring_units[99] = $langs->trans("SizeUnitinch"); $measuring_units[99] = $langs->transnoentitiesnoconv("SizeUnitinch");
} }
else if ($measuring_style == 'surface') else if ($measuring_style == 'surface')
{ {
$measuring_units[0] = $langs->trans("SurfaceUnitm2"); $measuring_units[0] = $langs->transnoentitiesnoconv("SurfaceUnitm2");
$measuring_units[-2] = $langs->trans("SurfaceUnitdm2"); $measuring_units[-2] = $langs->transnoentitiesnoconv("SurfaceUnitdm2");
$measuring_units[-4] = $langs->trans("SurfaceUnitcm2"); $measuring_units[-4] = $langs->transnoentitiesnoconv("SurfaceUnitcm2");
$measuring_units[-6] = $langs->trans("SurfaceUnitmm2"); $measuring_units[-6] = $langs->transnoentitiesnoconv("SurfaceUnitmm2");
$measuring_units[98] = $langs->trans("SurfaceUnitfoot2"); $measuring_units[98] = $langs->transnoentitiesnoconv("SurfaceUnitfoot2");
$measuring_units[99] = $langs->trans("SurfaceUnitinch2"); $measuring_units[99] = $langs->transnoentitiesnoconv("SurfaceUnitinch2");
} }
else if ($measuring_style == 'volume') else if ($measuring_style == 'volume')
{ {
$measuring_units[0] = $langs->trans("VolumeUnitm3"); $measuring_units[0] = $langs->transnoentitiesnoconv("VolumeUnitm3");
$measuring_units[-3] = $langs->trans("VolumeUnitdm3"); $measuring_units[-3] = $langs->transnoentitiesnoconv("VolumeUnitdm3");
$measuring_units[-6] = $langs->trans("VolumeUnitcm3"); $measuring_units[-6] = $langs->transnoentitiesnoconv("VolumeUnitcm3");
$measuring_units[-9] = $langs->trans("VolumeUnitmm3"); $measuring_units[-9] = $langs->transnoentitiesnoconv("VolumeUnitmm3");
$measuring_units[88] = $langs->trans("VolumeUnitfoot3"); $measuring_units[88] = $langs->transnoentitiesnoconv("VolumeUnitfoot3");
$measuring_units[89] = $langs->trans("VolumeUnitinch3"); $measuring_units[89] = $langs->transnoentitiesnoconv("VolumeUnitinch3");
$measuring_units[97] = $langs->trans("VolumeUnitounce"); $measuring_units[97] = $langs->transnoentitiesnoconv("VolumeUnitounce");
$measuring_units[98] = $langs->trans("VolumeUnitlitre"); $measuring_units[98] = $langs->transnoentitiesnoconv("VolumeUnitlitre");
$measuring_units[99] = $langs->trans("VolumeUnitgallon"); $measuring_units[99] = $langs->transnoentitiesnoconv("VolumeUnitgallon");
} }
return $measuring_units[$unit]; return $measuring_units[$unit];

View File

@ -63,18 +63,20 @@ class pdf_rouget extends ModelePdfExpedition
$this->option_logo = 1; $this->option_logo = 1;
// Recupere emmetteur // Get source company
$this->emetteur=$mysoc; $this->emetteur=$mysoc;
if (! $this->emetteur->country_code) $this->emetteur->country_code=substr($langs->defaultlang,-2); // By default if not defined if (! $this->emetteur->country_code) $this->emetteur->country_code=substr($langs->defaultlang,-2); // By default if not defined
// Defini position des colonnes // Define position of columns
$this->posxdesc=$this->marge_gauche+1; $this->posxdesc=$this->marge_gauche+1;
$this->posxqtyordered=$this->page_largeur - $this->marge_droite - 70; $this->posxweightvol=$this->page_largeur - $this->marge_droite - 80;
$this->posxqtytoship=$this->page_largeur - $this->marge_droite - 35; $this->posxqtyordered=$this->page_largeur - $this->marge_droite - 60;
$this->posxpicture=$this->posxqtyordered - (empty($conf->global->MAIN_DOCUMENTS_WITH_PICTURE_WIDTH)?20:$conf->global->MAIN_DOCUMENTS_WITH_PICTURE_WIDTH); // width of images $this->posxqtytoship=$this->page_largeur - $this->marge_droite - 30;
$this->posxpicture=$this->posxweightvol - (empty($conf->global->MAIN_DOCUMENTS_WITH_PICTURE_WIDTH)?20:$conf->global->MAIN_DOCUMENTS_WITH_PICTURE_WIDTH); // width of images
if ($this->page_largeur < 210) // To work with US executive format if ($this->page_largeur < 210) // To work with US executive format
{ {
$this->posxweightvol-=20;
$this->posxpicture-=20; $this->posxpicture-=20;
$this->posxqtyordered-=20; $this->posxqtyordered-=20;
$this->posxqtytoship-=20; $this->posxqtytoship-=20;
@ -92,7 +94,7 @@ class pdf_rouget extends ModelePdfExpedition
* @param int $hideref Do not show ref * @param int $hideref Do not show ref
* @return int 1=OK, 0=KO * @return int 1=OK, 0=KO
*/ */
function write_file(&$object,$outputlangs,$srctemplatepath='',$hidedetails=0,$hidedesc=0,$hideref=0) function write_file($object,$outputlangs,$srctemplatepath='',$hidedetails=0,$hidedesc=0,$hideref=0)
{ {
global $user,$conf,$langs,$hookmanager; global $user,$conf,$langs,$hookmanager;
@ -123,27 +125,15 @@ class pdf_rouget extends ModelePdfExpedition
{ {
if (empty($object->lines[$i]->fk_product)) continue; if (empty($object->lines[$i]->fk_product)) continue;
$objphoto->fetch($object->lines[$i]->fk_product); $objphoto = new Product($this->db);
//var_dump($objphoto->ref);exit; $objphoto->fetch($object->lines[$i]->fk_product);
if (! empty($conf->global->PRODUCT_USE_OLD_PATH_FOR_PHOTO))
{
$pdir[0] = get_exdir($objphoto->id,2,0,0,$objphoto,'product') . $objphoto->id ."/photos/";
$pdir[1] = get_exdir(0,0,0,0,$objphoto,'product') . dol_sanitizeFileName($objphoto->ref).'/';
}
else
{
$pdir[0] = get_exdir(0,0,0,0,$objphoto,'product') . dol_sanitizeFileName($objphoto->ref).'/'; // default
$pdir[1] = get_exdir($objphoto->id,2,0,0,$objphoto,'product') . $objphoto->id ."/photos/"; // alternative
}
$arephoto = false; $pdir = get_exdir($object->lines[$i]->fk_product,2,0,0,$objphoto,'product') . $object->lines[$i]->fk_product ."/photos/";
foreach ($pdir as $midir) $dir = $conf->product->dir_output.'/'.$pdir;
{
if (! $arephoto)
{
$dir = $conf->product->dir_output.'/'.$midir;
foreach ($objphoto->liste_photos($dir,1) as $key => $obj) $realpath='';
foreach ($objphoto->liste_photos($dir,1) as $key => $obj)
{ {
if (empty($conf->global->CAT_HIGH_QUALITY_IMAGES)) // If CAT_HIGH_QUALITY_IMAGES not defined, we use thumb if defined and then original photo if (empty($conf->global->CAT_HIGH_QUALITY_IMAGES)) // If CAT_HIGH_QUALITY_IMAGES not defined, we use thumb if defined and then original photo
{ {
@ -162,16 +152,14 @@ class pdf_rouget extends ModelePdfExpedition
} }
$realpath = $dir.$filename; $realpath = $dir.$filename;
$arephoto = true; break;
}
}
} }
if ($realpath && $arephoto) $realpatharray[$i]=$realpath; if ($realpath) $realpatharray[$i]=$realpath;
} }
} }
if (count($realpatharray) == 0) $this->posxpicture=$this->posxqtyordered; if (count($realpatharray) == 0) $this->posxpicture=$this->posxweightvol;
if ($conf->expedition->dir_output) if ($conf->expedition->dir_output)
{ {
@ -210,9 +198,12 @@ class pdf_rouget extends ModelePdfExpedition
global $action; global $action;
$reshook=$hookmanager->executeHooks('beforePDFCreation',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks $reshook=$hookmanager->executeHooks('beforePDFCreation',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks
// Set nblignes with the new facture lines content after hook
$nblignes = count($object->lines);
$pdf=pdf_getInstance($this->format); $pdf=pdf_getInstance($this->format);
$default_font_size = pdf_getPDFFontSize($outputlangs); $default_font_size = pdf_getPDFFontSize($outputlangs);
$heightforinfotot = 0; // Height reserved to output the info and total part $heightforinfotot = 30; // Height reserved to output the info and total part
$heightforfreetext= (isset($conf->global->MAIN_PDF_FREETEXT_HEIGHT)?$conf->global->MAIN_PDF_FREETEXT_HEIGHT:5); // Height reserved to output the free text on last page $heightforfreetext= (isset($conf->global->MAIN_PDF_FREETEXT_HEIGHT)?$conf->global->MAIN_PDF_FREETEXT_HEIGHT:5); // Height reserved to output the free text on last page
$heightforfooter = $this->marge_basse + 8; // Height reserved to output the footer (value include bottom margin) $heightforfooter = $this->marge_basse + 8; // Height reserved to output the footer (value include bottom margin)
$pdf->SetAutoPageBreak(1,0); $pdf->SetAutoPageBreak(1,0);
@ -380,7 +371,7 @@ class pdf_rouget extends ModelePdfExpedition
if (isset($imglinesize['width']) && isset($imglinesize['height'])) if (isset($imglinesize['width']) && isset($imglinesize['height']))
{ {
$curX = $this->posxpicture-1; $curX = $this->posxpicture-1;
$pdf->Image($realpatharray[$i], $curX + (($this->posxqtyordered-$this->posxpicture-$imglinesize['width'])/2), $curY, $imglinesize['width'], $imglinesize['height'], '', '', '', 2, 300); // Use 300 dpi $pdf->Image($realpatharray[$i], $curX + (($this->posxweightvol-$this->posxpicture-$imglinesize['width'])/2), $curY, $imglinesize['width'], $imglinesize['height'], '', '', '', 2, 300); // Use 300 dpi
// $pdf->Image does not increase value return by getY, so we save it manually // $pdf->Image does not increase value return by getY, so we save it manually
$posYAfterImage=$curY+$imglinesize['height']; $posYAfterImage=$curY+$imglinesize['height'];
} }
@ -389,7 +380,6 @@ class pdf_rouget extends ModelePdfExpedition
$curX = $this->posxdesc-1; $curX = $this->posxdesc-1;
$pdf->startTransaction(); $pdf->startTransaction();
// Description de la ligne produit
pdf_writelinedesc($pdf,$object,$i,$outputlangs,$this->posxpicture-$curX,3,$curX,$curY,$hideref,$hidedesc); pdf_writelinedesc($pdf,$object,$i,$outputlangs,$this->posxpicture-$curX,3,$curX,$curY,$hideref,$hidedesc);
$pageposafter=$pdf->getPage(); $pageposafter=$pdf->getPage();
@ -445,6 +435,20 @@ class pdf_rouget extends ModelePdfExpedition
$pdf->SetFont('','', $default_font_size - 1); // On repositionne la police par defaut $pdf->SetFont('','', $default_font_size - 1); // On repositionne la police par defaut
$pdf->SetXY($this->posxweightvol, $curY);
$weighttxt='';
if ($object->lines[$i]->fk_product_type == 0 && $object->lines[$i]->weight)
{
$weighttxt=$object->lines[$i]->weight*$object->lines[$i]->qty_shipped.' '.measuring_units_string($object->lines[$i]->weight_units,"weight");
}
$voltxt='';
if ($object->lines[$i]->fk_product_type == 0 && $object->lines[$i]->volume)
{
$voltxt=$object->lines[$i]->volume*$object->lines[$i]->qty_shipped.' '.measuring_units_string($object->lines[$i]->volume_units,"volume");
}
$pdf->MultiCell(($this->posxqtyordered - $this->posxweightvol), 3, $weighttxt.(($weighttxt && $voltxt)?', ':'').$voltxt,'','C');
$pdf->SetXY($this->posxqtyordered, $curY); $pdf->SetXY($this->posxqtyordered, $curY);
$pdf->MultiCell(($this->posxqtytoship - $this->posxqtyordered), 3, $object->lines[$i]->qty_asked,'','C'); $pdf->MultiCell(($this->posxqtytoship - $this->posxqtyordered), 3, $object->lines[$i]->qty_asked,'','C');
@ -501,15 +505,18 @@ class pdf_rouget extends ModelePdfExpedition
// Show square // Show square
if ($pagenb == 1) if ($pagenb == 1)
{ {
$this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter - $heightforfreetext - $heightforinfotot, 0, $outputlangs, 0, 0); $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 0, 0);
$bottomlasttab=$this->page_hauteur - $heightforfooter - $heightforfreetext - $heightforinfotot + 1; $bottomlasttab=$this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1;
} }
else else
{ {
$this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter - $heightforfreetext - $heightforinfotot, 0, $outputlangs, 1, 0); $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 1, 0);
$bottomlasttab=$this->page_hauteur - $heightforfooter - $heightforfreetext - $heightforinfotot + 1; $bottomlasttab=$this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1;
} }
// Affiche zone totaux
$posy=$this->_tableau_tot($pdf, $object, $deja_regle, $bottomlasttab, $outputlangs);
// Pied de page // Pied de page
$this->_pagefoot($pdf,$object,$outputlangs); $this->_pagefoot($pdf,$object,$outputlangs);
if (method_exists($pdf,'AliasNbPages')) $pdf->AliasNbPages(); if (method_exists($pdf,'AliasNbPages')) $pdf->AliasNbPages();
@ -519,11 +526,6 @@ class pdf_rouget extends ModelePdfExpedition
$pdf->Output($file,'F'); $pdf->Output($file,'F');
// Add pdfgeneration hook // Add pdfgeneration hook
if (! is_object($hookmanager))
{
include_once DOL_DOCUMENT_ROOT.'/core/class/hookmanager.class.php';
$hookmanager=new HookManager($this->db);
}
$hookmanager->initHooks(array('pdfgeneration')); $hookmanager->initHooks(array('pdfgeneration'));
$parameters=array('file'=>$file,'object'=>$object,'outputlangs'=>$outputlangs); $parameters=array('file'=>$file,'object'=>$object,'outputlangs'=>$outputlangs);
global $action; global $action;
@ -532,7 +534,7 @@ class pdf_rouget extends ModelePdfExpedition
if (! empty($conf->global->MAIN_UMASK)) if (! empty($conf->global->MAIN_UMASK))
@chmod($file, octdec($conf->global->MAIN_UMASK)); @chmod($file, octdec($conf->global->MAIN_UMASK));
return 1; return 1; // No error
} }
else else
{ {
@ -549,6 +551,89 @@ class pdf_rouget extends ModelePdfExpedition
return 0; // Erreur par defaut return 0; // Erreur par defaut
} }
/**
* Show total to pay
*
* @param PDF $pdf Object PDF
* @param Facture $object Object invoice
* @param int $deja_regle Montant deja regle
* @param int $posy Position depart
* @param Translate $outputlangs Objet langs
* @return int Position pour suite
*/
function _tableau_tot(&$pdf, $object, $deja_regle, $posy, $outputlangs)
{
global $conf,$mysoc;
$sign=1;
$default_font_size = pdf_getPDFFontSize($outputlangs);
$tab2_top = $posy;
$tab2_hl = 4;
$pdf->SetFont('','', $default_font_size - 1);
// Tableau total
$col1x = $this->posxweightvol-50; $col2x = $this->posxweightvol;
/*if ($this->page_largeur < 210) // To work with US executive format
{
$col2x-=20;
}*/
$largcol2 = ($this->posxqtyordered - $this->posxweightvol);
$useborder=0;
$index = 0;
$totalWeighttoshow='';
$totalVolumetoshow='';
// Load dim data
$tmparray=$object->getTotalWeightVolume();
$totalWeight=$tmparray['weight'];
$totalVolume=$tmparray['volume'];
// Set trueVolume and volume_units not currently stored into database
if ($object->trueWidth && $object->trueHeight && $object->trueDepth)
{
$object->trueVolume=price(($object->trueWidth * $object->trueHeight * $object->trueDepth), 0, $outputlangs, 0, 0);
$object->volume_units=$object->size_units * 3;
}
if ($totalWeight!='') $totalWeighttoshow=showDimensionInBestUnit($totalWeight, 0, "weight", $outputlangs);
if ($totalVolume!='') $totalVolumetoshow=showDimensionInBestUnit($totalVolume, 0, "volume", $outputlangs);
if ($object->trueWeight) $totalWeighttoshow=showDimensionInBestUnit($object->trueWeight, $object->weight_units, "weight", $outputlangs);
if ($object->trueVolume) $totalVolumetoshow=showDimensionInBestUnit($object->trueVolume, $object->volume_units, "volume", $outputlangs);
// Total Weight
if ($totalWeighttoshow)
{
$pdf->SetFillColor(255,255,255);
$pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index);
$pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->transnoentities("Weigth"), 0, 'L', 1);
$pdf->SetXY($col2x-20, $tab2_top + $tab2_hl * $index);
$pdf->MultiCell($largcol2+20, $tab2_hl, $totalWeighttoshow, 0, 'R', 1);
$index++;
}
if ($totalVolumetoshow)
{
// Total Volume
$pdf->SetFillColor(255,255,255);
$pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index);
$pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->transnoentities("Volume"), 0, 'L', 1);
$pdf->SetXY($col2x-20, $tab2_top + $tab2_hl * $index);
$pdf->MultiCell($largcol2+20, $tab2_hl, $totalVolumetoshow, 0, 'R', 1);
$index++;
}
$pdf->SetTextColor(0,0,0);
return ($tab2_top + ($tab2_hl * $index));
}
/** /**
* Show table for lines * Show table for lines
* *
@ -573,13 +658,13 @@ class pdf_rouget extends ModelePdfExpedition
// Amount in (at tab_top - 1) // Amount in (at tab_top - 1)
$pdf->SetTextColor(0,0,0); $pdf->SetTextColor(0,0,0);
$pdf->SetFont('','',$default_font_size - 1); $pdf->SetFont('','',$default_font_size - 2);
// Output Rect // Output Rect
$this->printRect($pdf,$this->marge_gauche, $tab_top, $this->page_largeur-$this->marge_gauche-$this->marge_droite, $tab_height, $hidetop, $hidebottom); // Rect prend une longueur en 3eme param et 4eme param $this->printRect($pdf,$this->marge_gauche, $tab_top, $this->page_largeur-$this->marge_gauche-$this->marge_droite, $tab_height, $hidetop, $hidebottom); // Rect prend une longueur en 3eme param et 4eme param
$pdf->SetDrawColor(128,128,128); $pdf->SetDrawColor(128,128,128);
$pdf->SetFont('','',$default_font_size - 1); $pdf->SetFont('','', $default_font_size - 1);
if (empty($hidetop)) if (empty($hidetop))
{ {
@ -589,10 +674,17 @@ class pdf_rouget extends ModelePdfExpedition
$pdf->MultiCell($this->posxqtyordered - $this->posxdesc, 2, $outputlangs->transnoentities("Description"), '', 'L'); $pdf->MultiCell($this->posxqtyordered - $this->posxdesc, 2, $outputlangs->transnoentities("Description"), '', 'L');
} }
$pdf->line($this->posxweightvol-1, $tab_top, $this->posxweightvol-1, $tab_top + $tab_height);
if (empty($hidetop))
{
$pdf->SetXY($this->posxweightvol-1, $tab_top+1);
$pdf->MultiCell(($this->posxqtyordered - $this->posxweightvol), 2, $outputlangs->transnoentities("WeightVolShort"),'','C');
}
$pdf->line($this->posxqtyordered-1, $tab_top, $this->posxqtyordered-1, $tab_top + $tab_height); $pdf->line($this->posxqtyordered-1, $tab_top, $this->posxqtyordered-1, $tab_top + $tab_height);
if (empty($hidetop)) if (empty($hidetop))
{ {
$pdf->SetXY($this->posxqtyordered, $tab_top+1); $pdf->SetXY($this->posxqtyordered-1, $tab_top+1);
$pdf->MultiCell(($this->posxqtytoship - $this->posxqtyordered), 2, $outputlangs->transnoentities("QtyOrdered"),'','C'); $pdf->MultiCell(($this->posxqtytoship - $this->posxqtyordered), 2, $outputlangs->transnoentities("QtyOrdered"),'','C');
} }
@ -616,12 +708,14 @@ class pdf_rouget extends ModelePdfExpedition
function _pagehead(&$pdf, $object, $showaddress, $outputlangs) function _pagehead(&$pdf, $object, $showaddress, $outputlangs)
{ {
global $conf,$langs,$mysoc; global $conf,$langs,$mysoc;
$default_font_size = pdf_getPDFFontSize($outputlangs);
$langs->load("orders"); $langs->load("orders");
$default_font_size = pdf_getPDFFontSize($outputlangs);
pdf_pagehead($pdf,$outputlangs,$this->page_hauteur); pdf_pagehead($pdf,$outputlangs,$this->page_hauteur);
//Affiche le filigrane brouillon - Print Draft Watermark // Show Draft Watermark
if($object->statut==0 && (! empty($conf->global->SHIPPING_DRAFT_WATERMARK)) ) if($object->statut==0 && (! empty($conf->global->SHIPPING_DRAFT_WATERMARK)) )
{ {
pdf_watermark($pdf,$outputlangs,$this->page_hauteur,$this->page_largeur,'mm',$conf->global->SHIPPING_DRAFT_WATERMARK); pdf_watermark($pdf,$outputlangs,$this->page_hauteur,$this->page_largeur,'mm',$conf->global->SHIPPING_DRAFT_WATERMARK);
@ -631,8 +725,10 @@ class pdf_rouget extends ModelePdfExpedition
$pdf->SetTextColor(0,0,60); $pdf->SetTextColor(0,0,60);
$pdf->SetFont('','B', $default_font_size + 3); $pdf->SetFont('','B', $default_font_size + 3);
$posx=$this->page_largeur-$this->marge_droite-100; $w = 110;
$posy=$this->marge_haute; $posy=$this->marge_haute;
$posx=$this->page_largeur-$this->marge_droite-$w;
$pdf->SetXY($this->marge_gauche,$posy); $pdf->SetXY($this->marge_gauche,$posy);
@ -649,14 +745,14 @@ class pdf_rouget extends ModelePdfExpedition
{ {
$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, 'L');
} }
// Show barcode // Show barcode
@ -685,14 +781,14 @@ class pdf_rouget extends ModelePdfExpedition
} }
$posx=$this->page_largeur - 100 - $this->marge_droite; $posx=$this->page_largeur - $w - $this->marge_droite;
$posy=$this->marge_haute; $posy=$this->marge_haute;
$pdf->SetFont('','B', $default_font_size + 2); $pdf->SetFont('','B', $default_font_size + 2);
$pdf->SetXY($posx,$posy); $pdf->SetXY($posx,$posy);
$pdf->SetTextColor(0,0,60); $pdf->SetTextColor(0,0,60);
$title=$outputlangs->transnoentities("SendingSheet"); $title=$outputlangs->transnoentities("SendingSheet");
$pdf->MultiCell(100, 4, $title, '', 'R'); $pdf->MultiCell($w, 4, $title, '', 'R');
$posy+=1; $posy+=1;
$pdf->SetFont('','', $default_font_size + 1); $pdf->SetFont('','', $default_font_size + 1);
@ -700,7 +796,7 @@ class pdf_rouget extends ModelePdfExpedition
$posy+=4; $posy+=4;
$pdf->SetXY($posx,$posy); $pdf->SetXY($posx,$posy);
$pdf->SetTextColor(0,0,60); $pdf->SetTextColor(0,0,60);
$pdf->MultiCell(100, 4, $outputlangs->transnoentities("RefSending") ." : ".$object->ref, '', 'R'); $pdf->MultiCell($w, 4, $outputlangs->transnoentities("RefSending") ." : ".$object->ref, '', 'R');
// Date planned delivery // Date planned delivery
if (! empty($object->date_delivery)) if (! empty($object->date_delivery))
@ -708,7 +804,7 @@ class pdf_rouget extends ModelePdfExpedition
$posy+=4; $posy+=4;
$pdf->SetXY($posx,$posy); $pdf->SetXY($posx,$posy);
$pdf->SetTextColor(0,0,60); $pdf->SetTextColor(0,0,60);
$pdf->MultiCell(100, 4, $outputlangs->transnoentities("DateDeliveryPlanned")." : ".dol_print_date($object->date_delivery,"day",false,$outputlangs,true), '', 'R'); $pdf->MultiCell($w, 4, $outputlangs->transnoentities("DateDeliveryPlanned")." : ".dol_print_date($object->date_delivery,"day",false,$outputlangs,true), '', 'R');
} }
if (! empty($object->client->code_client)) if (! empty($object->client->code_client))
@ -716,7 +812,7 @@ class pdf_rouget extends ModelePdfExpedition
$posy+=4; $posy+=4;
$pdf->SetXY($posx,$posy); $pdf->SetXY($posx,$posy);
$pdf->SetTextColor(0,0,60); $pdf->SetTextColor(0,0,60);
$pdf->MultiCell(100, 3, $outputlangs->transnoentities("CustomerCode")." : " . $outputlangs->transnoentities($object->client->code_client), '', 'R'); $pdf->MultiCell($w, 3, $outputlangs->transnoentities("CustomerCode")." : " . $outputlangs->transnoentities($object->client->code_client), '', 'R');
} }
@ -744,11 +840,11 @@ class pdf_rouget extends ModelePdfExpedition
$text=$linkedobject->ref; $text=$linkedobject->ref;
if ($linkedobject->ref_client) $text.=' ('.$linkedobject->ref_client.')'; if ($linkedobject->ref_client) $text.=' ('.$linkedobject->ref_client.')';
$Yoff = $Yoff+8; $Yoff = $Yoff+8;
$pdf->SetXY($this->page_largeur - $this->marge_droite - 100,$Yoff); $pdf->SetXY($this->page_largeur - $this->marge_droite - $w,$Yoff);
$pdf->MultiCell(100, 2, $outputlangs->transnoentities("RefOrder") ." : ".$outputlangs->transnoentities($text), 0, 'R'); $pdf->MultiCell($w, 2, $outputlangs->transnoentities("RefOrder") ." : ".$outputlangs->transnoentities($text), 0, 'R');
$Yoff = $Yoff+3; $Yoff = $Yoff+3;
$pdf->SetXY($this->page_largeur - $this->marge_droite - 60,$Yoff); $pdf->SetXY($this->page_largeur - $this->marge_droite - $w,$Yoff);
$pdf->MultiCell(60, 2, $outputlangs->transnoentities("OrderDate")." : ".dol_print_date($linkedobject->date,"day",false,$outputlangs,true), 0, 'R'); $pdf->MultiCell($w, 2, $outputlangs->transnoentities("OrderDate")." : ".dol_print_date($linkedobject->date,"day",false,$outputlangs,true), 0, 'R');
} }
} }
@ -761,18 +857,20 @@ class pdf_rouget extends ModelePdfExpedition
if (! empty($origin) && is_object($object->$origin)) $arrayidcontact=$object->$origin->getIdContact('internal','SALESREPFOLL'); if (! empty($origin) && is_object($object->$origin)) $arrayidcontact=$object->$origin->getIdContact('internal','SALESREPFOLL');
if (count($arrayidcontact) > 0) if (count($arrayidcontact) > 0)
{ {
$object->fetch_user($arrayidcontact[0]); $object->fetch_user(reset($arrayidcontact));
$carac_emetteur .= ($carac_emetteur ? "\n" : '' ).$outputlangs->transnoentities("Name").": ".$outputlangs->convToOutputCharset($object->user->getFullName($outputlangs))."\n"; $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).$outputlangs->transnoentities("Name").": ".$outputlangs->convToOutputCharset($object->user->getFullName($outputlangs))."\n";
} }
$carac_emetteur .= pdf_build_address($outputlangs, $this->emetteur, $object->client); $carac_emetteur .= pdf_build_address($outputlangs, $this->emetteur, $object->client);
// Show sender // Show sender
$posy=!empty($conf->global->MAIN_PDF_USE_ISO_LOCATION) ? 40 : 42;
$posx=$this->marge_gauche; $posx=$this->marge_gauche;
$posy=42;
$hautcadre=40;
if (! empty($conf->global->MAIN_INVERT_SENDER_RECIPIENT)) $posx=$this->page_largeur-$this->marge_droite-80; if (! empty($conf->global->MAIN_INVERT_SENDER_RECIPIENT)) $posx=$this->page_largeur-$this->marge_droite-80;
$hautcadre=!empty($conf->global->MAIN_PDF_USE_ISO_LOCATION) ? 38 : 40;
$widthrecbox=!empty($conf->global->MAIN_PDF_USE_ISO_LOCATION) ? 92 : 82;
// Show sender frame // Show sender frame
$pdf->SetTextColor(0,0,0); $pdf->SetTextColor(0,0,0);
$pdf->SetFont('','', $default_font_size - 2); $pdf->SetFont('','', $default_font_size - 2);
@ -780,19 +878,19 @@ class pdf_rouget extends ModelePdfExpedition
$pdf->MultiCell(66,5, $outputlangs->transnoentities("Sender").":", 0, 'L'); $pdf->MultiCell(66,5, $outputlangs->transnoentities("Sender").":", 0, 'L');
$pdf->SetXY($posx,$posy); $pdf->SetXY($posx,$posy);
$pdf->SetFillColor(230,230,230); $pdf->SetFillColor(230,230,230);
$pdf->MultiCell(82, $hautcadre, "", 0, 'R', 1); $pdf->MultiCell($widthrecbox, $hautcadre, "", 0, 'R', 1);
$pdf->SetTextColor(0,0,60);
// Show sender name // Show sender name
$pdf->SetXY($posx+2,$posy+3); $pdf->SetXY($posx+2,$posy+3);
$pdf->SetTextColor(0,0,60);
$pdf->SetFont('','B',$default_font_size); $pdf->SetFont('','B',$default_font_size);
$pdf->MultiCell(80, 3, $outputlangs->convToOutputCharset($this->emetteur->name), 0, 'L'); $pdf->MultiCell($widthrecbox-2, 4, $outputlangs->convToOutputCharset($this->emetteur->name), 0, 'L');
$posy=$pdf->getY(); $posy=$pdf->getY();
// Show sender information // Show sender information
$pdf->SetFont('','', $default_font_size - 1);
$pdf->SetXY($posx+2,$posy); $pdf->SetXY($posx+2,$posy);
$pdf->MultiCell(80, 4, $carac_emetteur, 0, 'L'); $pdf->SetFont('','', $default_font_size - 1);
$pdf->MultiCell($widthrecbox-2, 4, $carac_emetteur, 0, 'L');
// If SHIPPING contact defined, we use it // If SHIPPING contact defined, we use it
@ -817,24 +915,23 @@ class pdf_rouget extends ModelePdfExpedition
$carac_client=pdf_build_address($outputlangs,$this->emetteur,$object->client,(!empty($object->contact)?$object->contact:null),$usecontact,'targetwithdetails'); $carac_client=pdf_build_address($outputlangs,$this->emetteur,$object->client,(!empty($object->contact)?$object->contact:null),$usecontact,'targetwithdetails');
// Show recipient // Show recipient
$widthrecbox=100; $widthrecbox=!empty($conf->global->MAIN_PDF_USE_ISO_LOCATION) ? 92 : 100;
if ($this->page_largeur < 210) $widthrecbox=84; // To work with US executive format if ($this->page_largeur < 210) $widthrecbox=84; // To work with US executive format
$posy=42; $posy=!empty($conf->global->MAIN_PDF_USE_ISO_LOCATION) ? 40 : 42;
$posx=$this->page_largeur - $this->marge_droite - $widthrecbox; $posx=$this->page_largeur - $this->marge_droite - $widthrecbox;
if (! empty($conf->global->MAIN_INVERT_SENDER_RECIPIENT)) $posx=$this->marge_gauche; if (! empty($conf->global->MAIN_INVERT_SENDER_RECIPIENT)) $posx=$this->marge_gauche;
// Show recipient frame // Show recipient frame
$pdf->SetTextColor(0,0,0); $pdf->SetTextColor(0,0,0);
$pdf->SetFont('','', $default_font_size - 2); $pdf->SetFont('','', $default_font_size - 2);
$pdf->SetXY($posx,$posy-5); $pdf->SetXY($posx+2,$posy-5);
$pdf->MultiCell($widthrecbox, 4, $outputlangs->transnoentities("Recipient").":", 0, 'L'); $pdf->MultiCell($widthrecbox, 5, $outputlangs->transnoentities("Recipient").":", 0, 'L');
$pdf->Rect($posx, $posy, $widthrecbox, $hautcadre); $pdf->Rect($posx, $posy, $widthrecbox, $hautcadre);
$pdf->SetTextColor(0,0,0);
// Show recipient name // Show recipient name
$pdf->SetXY($posx+2,$posy+3); $pdf->SetXY($posx+2,$posy+3);
$pdf->SetFont('','B', $default_font_size); $pdf->SetFont('','B', $default_font_size);
$pdf->MultiCell($widthrecbox, 4, $carac_client_name, 0, 'L'); $pdf->MultiCell($widthrecbox, 2, $carac_client_name, 0, 'L');
$posy = $pdf->getY(); $posy = $pdf->getY();
@ -844,6 +941,7 @@ class pdf_rouget extends ModelePdfExpedition
$pdf->MultiCell($widthrecbox, 4, $carac_client, 0, 'L'); $pdf->MultiCell($widthrecbox, 4, $carac_client, 0, 'L');
} }
$pdf->SetTextColor(0,0,0);
} }
/** /**
@ -853,7 +951,7 @@ class pdf_rouget extends ModelePdfExpedition
* @param Object $object Object to show * @param Object $object Object to show
* @param Translate $outputlangs Object lang for output * @param Translate $outputlangs Object lang for output
* @param int $hidefreetext 1=Hide free text * @param int $hidefreetext 1=Hide free text
* @return void * @return int Return height of bottom margin including footer text
*/ */
function _pagefoot(&$pdf,$object,$outputlangs,$hidefreetext=0) function _pagefoot(&$pdf,$object,$outputlangs,$hidefreetext=0)
{ {

View File

@ -86,7 +86,6 @@ class pdf_crabe extends ModelePDFFactures
$this->name = "crabe"; $this->name = "crabe";
$this->description = $langs->trans('PDFCrabeDescription'); $this->description = $langs->trans('PDFCrabeDescription');
// Dimension page pour format A4
$this->type = 'pdf'; $this->type = 'pdf';
$formatarray=pdf_getFormat(); $formatarray=pdf_getFormat();
$this->page_largeur = $formatarray['width']; $this->page_largeur = $formatarray['width'];
@ -673,20 +672,20 @@ class pdf_crabe extends ModelePDFFactures
if (! empty($conf->global->MAIN_UMASK)) if (! empty($conf->global->MAIN_UMASK))
@chmod($file, octdec($conf->global->MAIN_UMASK)); @chmod($file, octdec($conf->global->MAIN_UMASK));
return 1; // Pas d'erreur return 1; // No error
} }
else else
{ {
$this->error=$langs->trans("ErrorCanNotCreateDir",$dir); $this->error=$langs->transnoentities("ErrorCanNotCreateDir",$dir);
return 0; return 0;
} }
} }
else else
{ {
$this->error=$langs->trans("ErrorConstantNotDefined","FAC_OUTPUTDIR"); $this->error=$langs->transnoentities("ErrorConstantNotDefined","FAC_OUTPUTDIR");
return 0; return 0;
} }
$this->error=$langs->trans("ErrorUnknown"); $this->error=$langs->transnoentities("ErrorUnknown");
return 0; // Erreur par defaut return 0; // Erreur par defaut
} }

View File

@ -1251,43 +1251,12 @@ else if ($id || $ref)
} }
// Calculate true totalWeight and totalVolume for all products
// by adding weight and volume of each product line.
$totalWeight = '';
$totalVolume = '';
$weightUnit=0;
$volumeUnit=0;
for ($i = 0 ; $i < $num_prod ; $i++)
{
$weightUnit=0;
$volumeUnit=0;
if (! empty($lines[$i]->weight_units)) $weightUnit = $lines[$i]->weight_units;
if (! empty($lines[$i]->volume_units)) $volumeUnit = $lines[$i]->volume_units;
// TODO Use a function addvalueunits(val1,unit1,val2,unit2)=>(val,unit) // Calculate totalWeight and totalVolume for all products
if ($lines[$i]->weight_units < 50) // by adding weight and volume of each product line.
{ $tmparray=$object->getTotalWeightVolume();
$trueWeightUnit=pow(10,$weightUnit); $totalWeight=$tmparray['weight'];
$totalWeight += $lines[$i]->weight*$lines[$i]->qty_shipped*$trueWeightUnit; $totalVolume=$tmparray['volume'];
}
else
{
$trueWeightUnit=$weightUnit;
$totalWeight += $lines[$i]->weight*$lines[$i]->qty_shipped;
}
if ($lines[$i]->volume_units < 50)
{
//print $lines[$i]->volume."x".$lines[$i]->volume_units."x".($lines[$i]->volume_units < 50)."x".$volumeUnit;
$trueVolumeUnit=pow(10,$volumeUnit);
//print $lines[$i]->volume;
$totalVolume += $lines[$i]->volume*$lines[$i]->qty_shipped*$trueVolumeUnit;
}
else
{
$trueVolumeUnit=$volumeUnit;
$totalVolume += $lines[$i]->volume*$lines[$i]->qty_shipped;
}
}
print '<table class="border" width="100%">'; print '<table class="border" width="100%">';
@ -1391,7 +1360,8 @@ else if ($id || $ref)
if ($totalWeight > 0) if ($totalWeight > 0)
{ {
if (!empty($object->trueWeight)) print ' ('.$langs->trans("SumOfProductWeights").': '; if (!empty($object->trueWeight)) print ' ('.$langs->trans("SumOfProductWeights").': ';
print $totalWeight.' '.measuring_units_string(0,"weight"); //print $totalWeight.' '.measuring_units_string(0,"weight");
print showDimensionInBestUnit($totalWeight, 0, "weight", $langs);
//if (empty($object->trueWeight)) print ' ('.$langs->trans("Calculated").')'; //if (empty($object->trueWeight)) print ' ('.$langs->trans("Calculated").')';
if (!empty($object->trueWeight)) print ')'; if (!empty($object->trueWeight)) print ')';
} }
@ -1438,18 +1408,27 @@ else if ($id || $ref)
print '</td>'; print '</td>';
print '<td colspan="3">'; print '<td colspan="3">';
$calculatedVolume=0; $calculatedVolume=0;
if ($object->trueWidth && $object->trueHeight && $object->trueDepth) $calculatedVolume=($object->trueWidth * $object->trueHeight * $object->trueDepth); $volumeUnit=0;
if ($object->trueWidth && $object->trueHeight && $object->trueDepth)
{
$calculatedVolume=($object->trueWidth * $object->trueHeight * $object->trueDepth);
$volumeUnit=$object->size_units * 3;
}
// If sending volume not defined we use sum of products // If sending volume not defined we use sum of products
if ($calculatedVolume > 0) if ($calculatedVolume > 0)
{ {
print $calculatedVolume.' '; if ($volumeUnit < 50)
if ($volumeUnit < 50) print measuring_units_string(0,"volume"); {
else print measuring_units_string($volumeUnit,"volume"); //print $calculatedVolume.' '.measuring_units_string($volumeUnit,"volume");
print showDimensionInBestUnit($calculatedVolume, $volumeUnit, "volume", $langs);
}
else print $calculatedVolume.' '.measuring_units_string($volumeUnit,"volume");
} }
if ($totalVolume > 0) if ($totalVolume > 0)
{ {
if ($calculatedVolume) print ' ('.$langs->trans("SumOfProductVolumes").': '; if ($calculatedVolume) print ' ('.$langs->trans("SumOfProductVolumes").': ';
print $totalVolume.' '.measuring_units_string(0,"volume"); //print $totalVolume.' '.measuring_units_string(0,"volume");
print showDimensionInBestUnit($totalVolume, 0, "volume", $langs);
//if (empty($calculatedVolume)) print ' ('.$langs->trans("Calculated").')'; //if (empty($calculatedVolume)) print ' ('.$langs->trans("Calculated").')';
if ($calculatedVolume) print ')'; if ($calculatedVolume) print ')';
} }

View File

@ -1003,7 +1003,7 @@ class Expedition extends CommonObject
if (isset($this->trueWeight)) $this->weight=trim($this->trueWeight); if (isset($this->trueWeight)) $this->weight=trim($this->trueWeight);
if (isset($this->note_private)) $this->note=trim($this->note_private); if (isset($this->note_private)) $this->note=trim($this->note_private);
if (isset($this->note_public)) $this->note=trim($this->note_public); if (isset($this->note_public)) $this->note=trim($this->note_public);
if (isset($this->model_pdf)) $this->model_pdf=trim($this->model_pdf); if (isset($this->modelpdf)) $this->modelpdf=trim($this->modelpdf);
@ -1035,7 +1035,7 @@ class Expedition extends CommonObject
$sql.= " weight=".(($this->trueWeight != '')?$this->trueWeight:"null").","; $sql.= " weight=".(($this->trueWeight != '')?$this->trueWeight:"null").",";
$sql.= " note_private=".(isset($this->note_private)?"'".$this->db->escape($this->note_private)."'":"null").","; $sql.= " note_private=".(isset($this->note_private)?"'".$this->db->escape($this->note_private)."'":"null").",";
$sql.= " note_public=".(isset($this->note_public)?"'".$this->db->escape($this->note_public)."'":"null").","; $sql.= " note_public=".(isset($this->note_public)?"'".$this->db->escape($this->note_public)."'":"null").",";
$sql.= " model_pdf=".(isset($this->model_pdf)?"'".$this->db->escape($this->model_pdf)."'":"null").","; $sql.= " model_pdf=".(isset($this->modelpdf)?"'".$this->db->escape($this->modelpdf)."'":"null").",";
$sql.= " entity=".$conf->entity; $sql.= " entity=".$conf->entity;
$sql.= " WHERE rowid=".$this->id; $sql.= " WHERE rowid=".$this->id;
@ -1742,6 +1742,52 @@ class Expedition extends CommonObject
} }
/**
* Return into unit=0, the calculated total of weight and volume of all lines * qty
* Calculate by adding weight and volume of each product line.
*
* @return array array('weight'=>...,'volume'=>...)
*/
function getTotalWeightVolume()
{
$weightUnit=0;
$volumeUnit=0;
$totalWeight = '';
$totalVolume = '';
foreach ($this->lines as $line)
{
$weightUnit=0;
$volumeUnit=0;
if (! empty($line->weight_units)) $weightUnit = $line->weight_units;
if (! empty($line->volume_units)) $volumeUnit = $line->volume_units;
//var_dump($line->volume_units);
if ($line->weight_units < 50) // >50 means a standard unit (power of 10 of official unit) > 50 means an exotic unit (like inch)
{
$trueWeightUnit=pow(10,$weightUnit);
$totalWeight += $line->weight*$line->qty_shipped*$trueWeightUnit;
}
else
{
$totalWeight += $line->weight*$line->qty_shipped; // This may be wrong if we mix different units
}
if ($line->volume_units < 50) // >50 means a standard unit (power of 10 of official unit) > 50 means an exotic unit (like inch)
{
//print $line->volume."x".$line->volume_units."x".($line->volume_units < 50)."x".$volumeUnit;
$trueVolumeUnit=pow(10,$volumeUnit);
//print $line->volume;
$totalVolume += $line->volume*$line->qty_shipped*$trueVolumeUnit;
}
else
{
$totalVolume += $line->volume*$line->qty_shipped; // This may be wrong if we mix different units
}
}
return array('weight'=>$totalWeight, 'volume'=>$totalVolume);
}
/** /**
* Forge an set tracking url * Forge an set tracking url
* *

View File

@ -70,6 +70,7 @@ ProductQtyInSuppliersOrdersRunning=Product quantity into opened suppliers orders
ProductQtyInShipmentAlreadySent=Product quantity from opened customer order already sent ProductQtyInShipmentAlreadySent=Product quantity from opened customer order already sent
ProductQtyInSuppliersShipmentAlreadyRecevied=Product quantity from opened supplier order already received ProductQtyInSuppliersShipmentAlreadyRecevied=Product quantity from opened supplier order already received
NoProductToShipFoundIntoStock=No product to ship found into warehouse <b>%s</b>. Correct stock or go back to choose another warehouse. NoProductToShipFoundIntoStock=No product to ship found into warehouse <b>%s</b>. Correct stock or go back to choose another warehouse.
WeightVolShort=Weight/Vol.
# Sending methods # Sending methods
SendingMethodCATCH=Catch by customer SendingMethodCATCH=Catch by customer