mirror of
https://github.com/Dolibarr/dolibarr.git
synced 2026-01-04 16:12:39 +01:00
Fixed automated computation of surface and volume to use correct units. It was failing for inches and feet.
This commit is contained in:
@@ -477,3 +477,42 @@ function measuring_units_string($unit,$measuring_style='')
|
||||
|
||||
return $measuring_units[$unit];
|
||||
}
|
||||
|
||||
/**
|
||||
* Transform a given unit into the square of that unit, if known
|
||||
*
|
||||
* @param int $unit Unit key (-3,-2,-1,0,98,99...)
|
||||
* @return int Squared unit key (-6,-4,-2,0,98,99...)
|
||||
* @see formproduct->load_measuring_units
|
||||
*/
|
||||
function measuring_units_squared($unit)
|
||||
{
|
||||
$measuring_units=array();
|
||||
$measuring_units[0] = 0; // m -> m3
|
||||
$measuring_units[-1] = -2; // dm-> dm2
|
||||
$measuring_units[-2] = -4; // cm -> cm2
|
||||
$measuring_units[-3] = -6; // mm -> mm2
|
||||
$measuring_units[98] = 98; // foot -> foot2
|
||||
$measuring_units[99] = 99; // inch -> inch2
|
||||
return $measuring_units[$unit];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Transform a given unit into the cube of that unit, if known
|
||||
*
|
||||
* @param int $unit Unit key (-3,-2,-1,0,98,99...)
|
||||
* @return int Cubed unit key (-9,-6,-3,0,88,89...)
|
||||
* @see formproduct->load_measuring_units
|
||||
*/
|
||||
function measuring_units_cubed($unit)
|
||||
{
|
||||
$measuring_units=array();
|
||||
$measuring_units[0] = 0; // m -> m2
|
||||
$measuring_units[-1] = -3; // dm-> dm3
|
||||
$measuring_units[-2] = -6; // cm -> cm3
|
||||
$measuring_units[-3] = -9; // mm -> mm3
|
||||
$measuring_units[98] = 88; // foot -> foot3
|
||||
$measuring_units[99] = 89; // inch -> inch3
|
||||
return $measuring_units[$unit];
|
||||
}
|
||||
|
||||
@@ -745,12 +745,12 @@ class Product extends CommonObject
|
||||
if (empty($this->surface) && !empty($this->length) && !empty($this->width) && $this->length_units == $this->width_units)
|
||||
{
|
||||
$this->surface = $this->length * $this->width;
|
||||
$this->surface_units = $this->length_units + $this->width_units;
|
||||
$this->surface_units = measuring_units_squared($this->length_units);
|
||||
}
|
||||
if (empty($this->volume) && !empty($this->surface_units) && !empty($this->height) && $this->length_units == $this->height_units)
|
||||
{
|
||||
$this->volume = $this->surface * $this->height;
|
||||
$this->volume_units = $this->surface_units + $this->height_units;
|
||||
$this->volume_units = measuring_units_cubed($this->height_units);
|
||||
}
|
||||
|
||||
$this->surface = price2num($this->surface);
|
||||
|
||||
Reference in New Issue
Block a user