2
0
forked from Wavyzz/dolibarr

Add: gestion du volume d'un produit

This commit is contained in:
Regis Houssin
2007-05-11 16:01:11 +00:00
parent c3fdfaed33
commit 60b5a42cff
8 changed files with 129 additions and 46 deletions

View File

@@ -2206,24 +2206,35 @@ class Form
/** /**
* \brief Selection des unites de poids * \brief Selection des unites de mesure
* \param name Nom champ html * \param name Nom champ html
* \param measuring_style Le style de mesure : weight, volume,...
* \param default For<6F>age de l'unite * \param default For<6F>age de l'unite
* \remarks pour l'instant on ne definit pas les unites dans la base * \remarks pour l'instant on ne definit pas les unites dans la base
*/ */
function select_weight_units($name='weight_units', $default='0', $adddefault=0) function select_measuring_units($name='measuring_units', $measuring_style='', $default='0', $adddefault=0)
{ {
global $langs,$conf,$mysoc; global $langs,$conf,$mysoc;
$langs->load("other"); $langs->load("other");
$units[3] = $langs->trans("WeightUnitmg"); if ($measuring_style == 'weight')
$units[0] = $langs->trans("WeightUnitkg"); {
$units[-3] = $langs->trans("WeightUnitg"); $measuring_units[3] = $langs->trans("WeightUnitton");
$measuring_units[0] = $langs->trans("WeightUnitkg");
$measuring_units[-3] = $langs->trans("WeightUnitg");
$measuring_units[-6] = $langs->trans("WeightUnitmg");
}
else if ($measuring_style == 'volume')
{
$measuring_units[0] = $langs->trans("VolumeUnitm3");
$measuring_units[-3] = $langs->trans("VolumeUnitcm3");
$measuring_units[-6] = $langs->trans("VolumeUnitmm3");
}
print '<select class="flat" name="'.$name.'">'; print '<select class="flat" name="'.$name.'">';
if ($adddefault) print '<option value="0">'.$langs->trans("Default").'</option>'; if ($adddefault) print '<option value="0">'.$langs->trans("Default").'</option>';
foreach ($units as $key => $value) foreach ($measuring_units as $key => $value)
{ {
print '<option value="'.$key.'"'; print '<option value="'.$key.'"';
if ($key == $default) if ($key == $default)
@@ -2233,8 +2244,14 @@ class Form
print '>'.$value.'</option>'; print '>'.$value.'</option>';
} }
print '</select>'; print '</select>';
} }
/**
*
*
*
*
*/
function load_tva($name='tauxtva', $defaulttx='', $societe_vendeuse='', $societe_acheteuse='', $taux_produit='') function load_tva($name='tauxtva', $defaulttx='', $societe_vendeuse='', $societe_acheteuse='', $taux_produit='')
{ {
global $langs,$conf,$mysoc; global $langs,$conf,$mysoc;

View File

@@ -59,9 +59,14 @@ FeaturesSupported=Features supported
Width=Width Width=Width
Height=Height Height=Height
Weight=Weight Weight=Weight
WeightUnitmg=tonnes WeightUnitton=tonnes
WeightUnitkg=kg WeightUnitkg=kg
WeightUnitg=g WeightUnitg=g
WeightUnitmg=mg
Volume=Volume
VolumeUnitm3=m3
VolumeUnitcm3=cm3
VolumeUnitmm3=mm3
BugTracker=Bug tracker BugTracker=Bug tracker
##### Webcal ##### ##### Webcal #####
LoginWebcal=Login for Webcalendar LoginWebcal=Login for Webcalendar

View File

@@ -59,9 +59,14 @@ FeaturesSupported=Fonctionnalit
Width=Largeur Width=Largeur
Height=Hauteur Height=Hauteur
Weight=Poids Weight=Poids
WeightUnitmg=tonnes WeightUnitton=tonnes
WeightUnitkg=kg WeightUnitkg=kg
WeightUnitg=g WeightUnitg=g
WeightUnitmg=mg
Volume=Volume
VolumeUnitm3=m3
VolumeUnitcm3=cm3
VolumeUnitmm3=mm3
BugTracker=Bug tracker BugTracker=Bug tracker
##### Webcal ##### ##### Webcal #####
LoginWebcal=Login Webcalendar LoginWebcal=Login Webcalendar

View File

@@ -2299,25 +2299,39 @@ function weight_convert($weight,&$from_unit,$to_unit)
return $weight; return $weight;
} }
/** /**
\brief Renvoi le texte d'une unite \brief Renvoi le texte d'une unite
\param int Unit \param int Unit
\return string Unite \param measuring_style Le style de mesure : weight, volume,...
\return string Unite
\todo gerer les autres unit<69>s de mesure comme la livre, le gallon, le litre, ... \todo gerer les autres unit<69>s de mesure comme la livre, le gallon, le litre, ...
*/ */
function weight_units_string($unit) function measuring_units_string($unit,$measuring_style='')
{ {
/* Note Rodo aux dev :) /* Note Rodo aux dev :)
* Ne pas ins<6E>rer dans la base de donn<6E>es ces valeurs * Ne pas ins<6E>rer dans la base de donn<6E>es ces valeurs
* cela surchagerait inutilement d'une requete suppl<70>mentaire * cela surchagerait inutilement d'une requete suppl<70>mentaire
* pour quelque chose qui est somme toute peu variable * pour quelque chose qui est somme toute peu variable
*/ */
$weight_string[3] = 'Tonnes';
$weight_string[0] = 'kg'; global $langs;
$weight_string[-3] = 'g';
$weight_string[-6] = 'mg'; if ($measuring_style == 'weight')
{
$measuring_units[3] = $langs->trans("WeightUnitton");
$measuring_units[0] = $langs->trans("WeightUnitkg");
$measuring_units[-3] = $langs->trans("WeightUnitg");
$measuring_units[-6] = $langs->trans("WeightUnitmg");
}
else if ($measuring_style == 'volume')
{
$measuring_units[0] = $langs->trans("VolumeUnitm3");
$measuring_units[-3] = $langs->trans("VolumeUnitcm3");
$measuring_units[-6] = $langs->trans("VolumeUnitmm3");
}
return $weight_string[$unit]; return $measuring_units[$unit];
} }
/** /**

View File

@@ -65,6 +65,14 @@ class Product
// Statut indique si le produit est en vente '1' ou non '0' // Statut indique si le produit est en vente '1' ou non '0'
var $status; var $status;
//! Unit<69>s de mesure
var $new_weight;
var $weight;
var $weight_units;
var $new_volume;
var $volume;
var $volume_units;
var $stats_propale=array(); var $stats_propale=array();
var $stats_commande=array(); var $stats_commande=array();
var $stats_contrat=array(); var $stats_contrat=array();
@@ -299,6 +307,8 @@ class Product
$this->stock_loc = trim($this->stock_loc); $this->stock_loc = trim($this->stock_loc);
$this->new_weight = price2num($this->new_weight); $this->new_weight = price2num($this->new_weight);
$this->new_weight_units = trim($this->new_weight_units); $this->new_weight_units = trim($this->new_weight_units);
$this->new_volume = price2num($this->new_volume);
$this->new_volume_units = trim($this->new_volume_units);
$sql = "UPDATE ".MAIN_DB_PREFIX."product "; $sql = "UPDATE ".MAIN_DB_PREFIX."product ";
$sql .= " SET label = '" . addslashes($this->libelle) ."'"; $sql .= " SET label = '" . addslashes($this->libelle) ."'";
@@ -307,6 +317,8 @@ class Product
$sql .= ",envente = " . $this->status; $sql .= ",envente = " . $this->status;
$sql .= ",weight = " . ($this->new_weight!='' ? "'".$this->new_weight."'" : 'null'); $sql .= ",weight = " . ($this->new_weight!='' ? "'".$this->new_weight."'" : 'null');
$sql .= ",weight_units = '" . $this->new_weight_units."'"; $sql .= ",weight_units = '" . $this->new_weight_units."'";
$sql .= ",volume = " . ($this->new_volume!='' ? "'".$this->new_volume."'" : 'null');
$sql .= ",volume_units = '" . $this->new_volume_units."'";
$sql .= ",seuil_stock_alerte = '" . $this->seuil_stock_alerte."'"; $sql .= ",seuil_stock_alerte = '" . $this->seuil_stock_alerte."'";
$sql .= ",description = '" . addslashes($this->description) ."'"; $sql .= ",description = '" . addslashes($this->description) ."'";
$sql .= ",stock_loc = '" . addslashes($this->stock_loc) ."'"; $sql .= ",stock_loc = '" . addslashes($this->stock_loc) ."'";
@@ -933,7 +945,7 @@ class Product
$sql = "SELECT rowid, ref, label, description, note, price, price_ttc, price_base_type, tva_tx, envente,"; $sql = "SELECT rowid, ref, label, description, note, price, price_ttc, price_base_type, tva_tx, envente,";
$sql.= " nbvente, fk_product_type, duration, seuil_stock_alerte,canvas,"; $sql.= " nbvente, fk_product_type, duration, seuil_stock_alerte,canvas,";
$sql.= " stock_commande, stock_loc, weight, weight_units"; $sql.= " stock_commande, stock_loc, weight, weight_units, volume, volume_units";
$sql.= " FROM ".MAIN_DB_PREFIX."product"; $sql.= " FROM ".MAIN_DB_PREFIX."product";
if ($id) $sql.= " WHERE rowid = '".$id."'"; if ($id) $sql.= " WHERE rowid = '".$id."'";
if ($ref) $sql.= " WHERE ref = '".addslashes($ref)."'"; if ($ref) $sql.= " WHERE ref = '".addslashes($ref)."'";
@@ -963,6 +975,8 @@ class Product
$this->stock_loc = $result["stock_loc"]; $this->stock_loc = $result["stock_loc"];
$this->weight = $result["weight"]; $this->weight = $result["weight"];
$this->weight_units = $result["weight_units"]; $this->weight_units = $result["weight_units"];
$this->volume = $result["volume"];
$this->volume_units = $result["volume_units"];
$this->stock_in_command = $result["stock_commande"]; $this->stock_in_command = $result["stock_commande"];

View File

@@ -86,6 +86,8 @@ if ($_POST["action"] == 'add' && $user->rights->produit->creer)
$product->canvas = $_POST["canvas"]; $product->canvas = $_POST["canvas"];
$product->new_weight = $_POST["weight"]; $product->new_weight = $_POST["weight"];
$product->new_weight_units = $_POST["weight_units"]; $product->new_weight_units = $_POST["weight_units"];
$product->new_volume = $_POST["volume"];
$product->new_volume_units = $_POST["volume_units"];
// MultiPrix // MultiPrix
if($conf->global->PRODUIT_MULTIPRICES == 1) if($conf->global->PRODUIT_MULTIPRICES == 1)
{ {
@@ -149,6 +151,8 @@ if ($_POST["action"] == 'update' &&
$product->canvas = $_POST["canvas"]; $product->canvas = $_POST["canvas"];
$product->new_weight = $_POST["weight"]; $product->new_weight = $_POST["weight"];
$product->new_weight_units = $_POST["weight_units"]; $product->new_weight_units = $_POST["weight_units"];
$product->new_volume = $_POST["volume"];
$product->new_volume_units = $_POST["volume_units"];
if ($product->check()) if ($product->check())
{ {
@@ -520,10 +524,14 @@ if ($_GET["action"] == 'create' && $user->rights->produit->creer)
} }
else else
{ {
// Le poids ne concerne que les produits et pas les services // Le poids et le volume ne concerne que les produits et pas les services
print '<tr><td>'.$langs->trans("Weight").'</td><td>'; print '<tr><td>'.$langs->trans("Weight").'</td><td>';
print '<input name="weight" size="4" value="">'; print '<input name="weight" size="4" value="">';
print $html->select_weight_units("weight_units"); print $html->select_measuring_units("weight_units","weight");
print '</td></tr>';
print '<tr><td>'.$langs->trans("volume").'</td><td>';
print '<input name="volume" size="4" value="">';
print $html->select_measuring_units("volume_units","volume");
print '</td></tr>'; print '</td></tr>';
} }
@@ -757,32 +765,43 @@ if ($_GET["id"] || $_GET["ref"])
// Dur<75>e // Dur<75>e
if ($product->isservice()) if ($product->isservice())
{
print '<tr><td>'.$langs->trans("Duration").'</td><td>'.$product->duration_value.'&nbsp;';
if ($product->duration_value > 1)
{ {
print '<tr><td>'.$langs->trans("Duration").'</td><td>'.$product->duration_value.'&nbsp;'; $dur=array("d"=>$langs->trans("Days"),"w"=>$langs->trans("Weeks"),"m"=>$langs->trans("Months"),"y"=>$langs->trans("Years"));
if ($product->duration_value > 1) }
{ else
$dur=array("d"=>$langs->trans("Days"),"w"=>$langs->trans("Weeks"),"m"=>$langs->trans("Months"),"y"=>$langs->trans("Years")); {
} $dur=array("d"=>$langs->trans("Day"),"w"=>$langs->trans("Week"),"m"=>$langs->trans("Month"),"y"=>$langs->trans("Year"));
else { }
$dur=array("d"=>$langs->trans("Day"),"w"=>$langs->trans("Week"),"m"=>$langs->trans("Month"),"y"=>$langs->trans("Year")); print $langs->trans($dur[$product->duration_unit])."&nbsp;";
}
print $langs->trans($dur[$product->duration_unit])."&nbsp;";
print '</td></tr>'; print '</td></tr>';
} }
else else
{ {
print '<tr><td>'.$langs->trans("Weight").'</td><td>'; print '<tr><td>'.$langs->trans("Weight").'</td><td>';
if ($product->weight != '') if ($product->weight != '')
{ {
print $product->weight." ".weight_units_string($product->weight_units); print $product->weight." ".measuring_units_string($product->weight_units,"weight");
} }
else else
{ {
print '&nbsp;'; print '&nbsp;';
} }
print "</td></tr>\n"; print "</td></tr>\n";
} print '<tr><td>'.$langs->trans("Volume").'</td><td>';
if ($product->volume != '')
{
print $product->volume." ".measuring_units_string($product->volume_units,"volume");
}
else
{
print '&nbsp;';
}
print "</td></tr>\n";
}
// Note // Note
print '<tr><td valign="top">'.$langs->trans("Note").'</td><td>'.nl2br($product->note).'</td></tr>'; print '<tr><td valign="top">'.$langs->trans("Note").'</td><td>'.nl2br($product->note).'</td></tr>';
print "</table>\n"; print "</table>\n";
@@ -877,10 +896,14 @@ if ($_GET["id"] || $_GET["ref"])
} }
else else
{ {
// Le poids ne concerne que les produits et pas les services // Le poids et le volume ne concerne que les produits et pas les services
print '<tr><td>'.$langs->trans("Weight").'</td><td>'; print '<tr><td>'.$langs->trans("Weight").'</td><td>';
print '<input name="weight" size="5" value="'.$product->weight.'">'; print '<input name="weight" size="5" value="'.$product->weight.'">';
print $html->select_weight_units("weight_units",$product->weight_units); print $html->select_measuring_units("weight_units", "weight", $product->weight_units);
print '</td></tr>';
print '<tr><td>'.$langs->trans("Volume").'</td><td>';
print '<input name="volume" size="5" value="'.$product->volume.'">';
print $html->select_measuring_units("volume_units", "volume", $product->volume_units);
print '</td></tr>'; print '</td></tr>';
} }

View File

@@ -516,3 +516,6 @@ insert into `llx_menu_const` (`rowid`, `fk_menu`, `fk_constraint`, `user`) value
insert into `llx_menu_const` (`rowid`, `fk_menu`, `fk_constraint`, `user`) values (107, 4901, 6, 2); insert into `llx_menu_const` (`rowid`, `fk_menu`, `fk_constraint`, `user`) values (107, 4901, 6, 2);
insert into `llx_menu_const` (`rowid`, `fk_menu`, `fk_constraint`, `user`) values (108, 5000, 26, 2); insert into `llx_menu_const` (`rowid`, `fk_menu`, `fk_constraint`, `user`) values (108, 5000, 26, 2);
insert into `llx_menu_const` (`rowid`, `fk_menu`, `fk_constraint`, `user`) values (109, 5001, 6, 2); insert into `llx_menu_const` (`rowid`, `fk_menu`, `fk_constraint`, `user`) values (109, 5001, 6, 2);
ALTER TABLE llx_product ADD COLUMN volume float DEFAULT NULL after weight_units;
ALTER TABLE llx_product ADD COLUMN volume_units tinyint DEFAULT NULL after volume;

View File

@@ -45,5 +45,7 @@ create table llx_product
gencode varchar(255) DEFAULT NULL, gencode varchar(255) DEFAULT NULL,
weight float DEFAULT NULL, weight float DEFAULT NULL,
weight_units tinyint DEFAULT NULL, weight_units tinyint DEFAULT NULL,
volume float DEFAULT NULL,
volume_units tinyint DEFAULT NULL,
canvas varchar(15) DEFAULT '' canvas varchar(15) DEFAULT ''
)type=innodb; )type=innodb;