Add more units
This commit is contained in:
parent
f038ba869b
commit
76a7e8f424
@ -713,21 +713,44 @@ else
|
||||
if ($ret == 'html') print '<br>';
|
||||
}
|
||||
|
||||
// Calcul du poids total et du volume total des produits
|
||||
// Calculate ture totalVeight and totalVolume for all products
|
||||
// by adding weight and volume of each line.
|
||||
$totalWeight = '';
|
||||
$totalVolume = '';
|
||||
$weightUnit=0;
|
||||
$volumeUnit=0;
|
||||
for ($i = 0 ; $i < $num_prod ; $i++)
|
||||
{
|
||||
$weightUnit=0;
|
||||
$volumeUnit=0;
|
||||
if (! empty($lignes[$i]->weight_units)) $weightUnit = $lignes[$i]->weight_units;
|
||||
$trueWeightUnit=pow(10,$weightUnit);
|
||||
$totalWeight += $lignes[$i]->weight*$lignes[$i]->qty_shipped*$trueWeightUnit;
|
||||
if (! empty($lignes[$i]->volume_units)) $volumeUnit = $lignes[$i]->volume_units;
|
||||
$trueVolumeUnit=pow(10,$volumeUnit);
|
||||
$totalVolume += $lignes[$i]->volume*$lignes[$i]->qty_shipped*$trueVolumeUnit;
|
||||
// TODO Use a function addvalueunits(val1,unit1,val2,unit2)=>(val,unit)
|
||||
if ($lignes[$i]->weight_units < 50)
|
||||
{
|
||||
$trueWeightUnit=pow(10,$weightUnit);
|
||||
$totalWeight += $lignes[$i]->weight*$lignes[$i]->qty_shipped*$trueWeightUnit;
|
||||
}
|
||||
else
|
||||
{
|
||||
$trueWeightUnit=$weightUnit;
|
||||
$totalWeight += $lignes[$i]->weight*$lignes[$i]->qty_shipped;
|
||||
}
|
||||
if ($lignes[$i]->volume_units < 50)
|
||||
{
|
||||
//print $lignes[$i]->volume."x".$lignes[$i]->volume_units."x".($lignes[$i]->volume_units < 50)."x".$volumeUnit;
|
||||
$trueVolumeUnit=pow(10,$volumeUnit);
|
||||
//print $lignes[$i]->volume;
|
||||
$totalVolume += $lignes[$i]->volume*$lignes[$i]->qty_shipped*$trueVolumeUnit;
|
||||
}
|
||||
else
|
||||
{
|
||||
$trueVolumeUnit=$volumeUnit;
|
||||
$totalVolume += $lignes[$i]->volume*$lignes[$i]->qty_shipped;
|
||||
}
|
||||
}
|
||||
$totalVolume=$totalVolume;
|
||||
//print "totalVolume=".$totalVolume." volumeUnit=".$volumeUnit;
|
||||
|
||||
print '<table class="border" width="100%">';
|
||||
|
||||
@ -831,8 +854,12 @@ else
|
||||
else
|
||||
{
|
||||
// If sending volume not defined we use sum of products
|
||||
// TODO Show in best unit
|
||||
if ($totalVolume > 0) print $totalVolume.' '.measuring_units_string(0,"volume");
|
||||
if ($totalVolume > 0)
|
||||
{
|
||||
print $totalVolume.' ';
|
||||
if ($volumeUnit < 50) print measuring_units_string(0,"volume");
|
||||
else print measuring_units_string($volumeUnit,"volume");
|
||||
}
|
||||
else print ' ';
|
||||
}
|
||||
print "</td>\n";
|
||||
|
||||
@ -925,22 +925,30 @@ class CommandeFournisseur extends Commande
|
||||
/**
|
||||
* Add a product into a stock warehouse.
|
||||
*
|
||||
* @param $user
|
||||
* @param $product
|
||||
* @param $qty
|
||||
* @param $user User object making change
|
||||
* @param $product Product object to dispatch
|
||||
* @param $qty Qty to dispatch
|
||||
* @param $entrepot Id of warehouse to add product
|
||||
* @param $price
|
||||
* @return int <0 if KO, =0 if OK
|
||||
* @param $price Price for PMP value calculation
|
||||
* @param $comment Comment for stock movement
|
||||
* @return int <0 if KO, >0 if OK
|
||||
*/
|
||||
function DispatchProduct($user, $product, $qty, $entrepot, $price=0)
|
||||
function DispatchProduct($user, $product, $qty, $entrepot, $price=0, $comment='')
|
||||
{
|
||||
global $conf;
|
||||
$error = 0;
|
||||
require_once DOL_DOCUMENT_ROOT ."/product/stock/class/mouvementstock.class.php";
|
||||
|
||||
// Check parameters
|
||||
if ($entrepot <= 0 || $qty <= 0)
|
||||
{
|
||||
$this->error='BadValueForParameter';
|
||||
return -1;
|
||||
}
|
||||
|
||||
$now=dol_now();
|
||||
|
||||
if ( ($this->statut == 3 || $this->statut == 4 || $this->statut == 5) && $qty > 0)
|
||||
if (($this->statut == 3 || $this->statut == 4 || $this->statut == 5))
|
||||
{
|
||||
$this->db->begin();
|
||||
|
||||
@ -973,7 +981,7 @@ class CommandeFournisseur extends Commande
|
||||
if ($error == 0)
|
||||
{
|
||||
$this->db->commit();
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -983,6 +991,7 @@ class CommandeFournisseur extends Commande
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->error='BadStatusForObject';
|
||||
return -2;
|
||||
}
|
||||
}
|
||||
|
||||
@ -46,12 +46,18 @@ $id = isset($_GET["id"])?$_GET["id"]:'';
|
||||
if ($user->societe_id) $socid=$user->societe_id;
|
||||
$result = restrictedArea($user, 'commande_fournisseur', $id,'');
|
||||
|
||||
if (empty($conf->stock->enabled))
|
||||
{
|
||||
accessforbidden();
|
||||
}
|
||||
|
||||
// Recuperation de l'id de projet
|
||||
$projectid = 0;
|
||||
if ($_GET["projectid"]) $projectid = $_GET["projectid"];
|
||||
|
||||
$mesg='';
|
||||
|
||||
|
||||
/*
|
||||
* Actions
|
||||
*/
|
||||
@ -68,7 +74,14 @@ if ($_POST["action"] == 'dispatch' && $user->rights->fournisseur->commande->rece
|
||||
$qty = "qty_".$reg[1];
|
||||
$ent = "entrepot_".$reg[1];
|
||||
$pu = "pu_".$reg[1];
|
||||
$result = $commande->DispatchProduct($user, $_POST[$prod], $_POST[$qty], $_POST[$ent], $_POST[$pu]);
|
||||
if ($_POST[$ent] > 0)
|
||||
{
|
||||
$result = $commande->DispatchProduct($user, $_POST[$prod], $_POST[$qty], $_POST[$ent], $_POST[$pu], $_POST["label"]);
|
||||
}
|
||||
else
|
||||
{
|
||||
dol_syslog('No dispatch for line '.$key.' as no warehouse choosed');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -79,12 +92,11 @@ if ($_POST["action"] == 'dispatch' && $user->rights->fournisseur->commande->rece
|
||||
}
|
||||
else
|
||||
{
|
||||
$mesg=$commande->error;
|
||||
$mesg='<div class="error">'.$langs->trans($commande->error).'</div>';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* View
|
||||
*/
|
||||
@ -182,6 +194,9 @@ if ($id > 0 || ! empty($ref))
|
||||
|
||||
if ($commande->statut == 3 || $commande->statut == 4 || $commande->statut == 5)
|
||||
{
|
||||
$entrepot = new Entrepot($db);
|
||||
$listwarehouses=$entrepot->list_array(1);
|
||||
|
||||
print '<form method="POST" action="dispatch.php?id='.$commande->id.'">';
|
||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
print '<input type="hidden" name="action" value="dispatch">';
|
||||
@ -229,7 +244,6 @@ if ($id > 0 || ! empty($ref))
|
||||
print "</tr>\n";
|
||||
}
|
||||
|
||||
$entrepot = new Entrepot($db);
|
||||
$nbfreeproduct=0;
|
||||
$nbproduct=0;
|
||||
|
||||
@ -268,8 +282,14 @@ if ($id > 0 || ! empty($ref))
|
||||
|
||||
// Warehouse
|
||||
print '<td align="right">';
|
||||
print $html->selectarray("entrepot_".$i, $entrepot->list_array(), '', $disabled, 0, 0, '', 0, 0, $disabled);
|
||||
|
||||
if (sizeof($listwarehouses))
|
||||
{
|
||||
print $html->selectarray("entrepot_".$i, $listwarehouses, '', $disabled, 0, 0, '', 0, 0, $disabled);
|
||||
}
|
||||
else
|
||||
{
|
||||
print $langs->trans("NoWarehouseDefined");
|
||||
}
|
||||
print "</td>\n";
|
||||
print "</tr>\n";
|
||||
}
|
||||
@ -287,7 +307,9 @@ if ($id > 0 || ! empty($ref))
|
||||
|
||||
if ($nbproduct)
|
||||
{
|
||||
print '<center><input type="submit" class="button" value="'.$langs->trans("DispatchVerb").'"></center>';
|
||||
print '<center><input type="submit" class="button" value="'.$langs->trans("DispatchVerb").'"';
|
||||
if (sizeof($listwarehouses) <= 0) print ' disabled="true"';
|
||||
print '></center>';
|
||||
}
|
||||
if (! $nbproduct && $nbfreeproduct)
|
||||
{
|
||||
|
||||
@ -293,7 +293,7 @@ if ($_REQUEST['action'] == 'confirm_valid' && $_REQUEST['confirm'] == 'yes' && $
|
||||
|
||||
$commande->fetch($id);
|
||||
|
||||
$commande->date_commande=time();
|
||||
$commande->date_commande=dol_now();
|
||||
$result = $commande->valid($user);
|
||||
if ($result >= 0)
|
||||
{
|
||||
@ -812,7 +812,7 @@ if ($id > 0 || ! empty($ref))
|
||||
*/
|
||||
if ($_GET['action'] == 'approve')
|
||||
{
|
||||
$ret=$html->form_confirm("fiche.php?id=$commande->id",$langs->trans("ApproveThisOrder"),$langs->trans("ConfirmApproveThisOrder"),"confirm_approve", '', 1, 1);
|
||||
$ret=$html->form_confirm("fiche.php?id=$commande->id",$langs->trans("ApproveThisOrder"),$langs->trans("ConfirmApproveThisOrder",$commande->ref),"confirm_approve", '', 1, 1);
|
||||
if ($ret == 'html') print '<br>';
|
||||
}
|
||||
/*
|
||||
@ -820,7 +820,7 @@ if ($id > 0 || ! empty($ref))
|
||||
*/
|
||||
if ($_GET['action'] == 'refuse')
|
||||
{
|
||||
$ret=$html->form_confirm("fiche.php?id=$commande->id",$langs->trans("DenyingThisOrder"),$langs->trans("ConfirmDenyingThisOrder"),"confirm_refuse", '', 0, 1);
|
||||
$ret=$html->form_confirm("fiche.php?id=$commande->id",$langs->trans("DenyingThisOrder"),$langs->trans("ConfirmDenyingThisOrder",$commande->ref),"confirm_refuse", '', 0, 1);
|
||||
if ($ret == 'html') print '<br>';
|
||||
}
|
||||
/*
|
||||
@ -828,7 +828,7 @@ if ($id > 0 || ! empty($ref))
|
||||
*/
|
||||
if ($_GET['action'] == 'cancel')
|
||||
{
|
||||
$ret=$html->form_confirm("fiche.php?id=$commande->id",$langs->trans("Cancel"),$langs->trans("ConfirmCancelThisOrder"),"confirm_cancel", '', 0, 1);
|
||||
$ret=$html->form_confirm("fiche.php?id=$commande->id",$langs->trans("Cancel"),$langs->trans("ConfirmCancelThisOrder",$commande->ref),"confirm_cancel", '', 0, 1);
|
||||
if ($ret == 'html') print '<br>';
|
||||
}
|
||||
|
||||
|
||||
@ -25,10 +25,10 @@ RefSupplierShort=Ref. supplier
|
||||
ExportDataset_fournisseur_1=Supplier invoices list and invoice's lines
|
||||
ExportDataset_fournisseur_2=Supplier invoices and payments
|
||||
ApproveThisOrder=Approve this order
|
||||
ConfirmApproveThisOrder=Are you sure you want to approve this order ?
|
||||
ConfirmApproveThisOrder=Are you sure you want to approve order <b>%s</b> ?
|
||||
DenyingThisOrder=Denying this order
|
||||
ConfirmDenyingThisOrder=Are you sure you want to deny this order ?
|
||||
ConfirmCancelThisOrder=Are you sure you want to cancel this order ?
|
||||
ConfirmDenyingThisOrder=Are you sure you want to deny this order <b>%s</b> ?
|
||||
ConfirmCancelThisOrder=Are you sure you want to cancel this order <b>%s</b> ?
|
||||
AddCustomerOrder=Create customer order
|
||||
AddCustomerInvoice=Create customer invoice
|
||||
AddSupplierOrder=Create supplier order
|
||||
|
||||
@ -24,10 +24,10 @@ RefSupplierShort=Réf. fournisseur
|
||||
ExportDataset_fournisseur_1=Factures fournisseurs et lignes de facture
|
||||
ExportDataset_fournisseur_2=Factures fournisseurs et règlements
|
||||
ApproveThisOrder=Approuver la commande
|
||||
ConfirmApproveThisOrder=Êtes-vous sûr de vouloir approuver cette commande ?
|
||||
ConfirmApproveThisOrder=Êtes-vous sûr de vouloir approuver la commande fournisseur <b>%</b> ?
|
||||
DenyingThisOrder=Refuser la commande
|
||||
ConfirmDenyingThisOrder=Êtes-vous sûr de vouloir refuser cette commande ?
|
||||
ConfirmCancelThisOrder=Êtes-vous sûr de vouloir annuler cette commande ?
|
||||
ConfirmDenyingThisOrder=Êtes-vous sûr de vouloir refuser la commande fournisseur <b>%</b> ?
|
||||
ConfirmCancelThisOrder=Êtes-vous sûr de vouloir annuler la commande fournisseur <b>%</b> ?
|
||||
AddCustomerOrder=Créer commande client
|
||||
AddCustomerInvoice=Créer facture/avoir client
|
||||
AddSupplierOrder=Créer commande fournisseur
|
||||
|
||||
@ -319,20 +319,20 @@ class Entrepot extends CommonObject
|
||||
|
||||
|
||||
/**
|
||||
* \brief Renvoie la liste des entrep<EFBFBD>ts ouverts
|
||||
* Return list of all warehouses
|
||||
* @return array Array list of warehouses
|
||||
*/
|
||||
function list_array()
|
||||
function list_array($status=1)
|
||||
{
|
||||
$liste = array();
|
||||
|
||||
$sql = "SELECT rowid, label";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."entrepot";
|
||||
$sql.= " WHERE statut = 1";
|
||||
$sql.= " WHERE statut = ".$status;
|
||||
|
||||
$result = $this->db->query($sql) ;
|
||||
$i = 0;
|
||||
$num = $this->db->num_rows($result);
|
||||
|
||||
if ( $result )
|
||||
{
|
||||
while ($i < $num)
|
||||
|
||||
@ -27,7 +27,7 @@
|
||||
|
||||
/**
|
||||
* \class MouvementStock
|
||||
* \brief Classe permettant la gestion des mouvements de stocks
|
||||
* \brief Class to manage stock movements
|
||||
*/
|
||||
class MouvementStock
|
||||
{
|
||||
@ -47,7 +47,7 @@ class MouvementStock
|
||||
* 0=input (stock increase after stock transfert), 1=output (stock decrease after stock transfer),
|
||||
* 2=output (stock decrease), 3=input (stock increase)
|
||||
* \param price Unit price HT of product
|
||||
* \pamam label Label of stock movement
|
||||
* \param label Label of stock movement
|
||||
* \return int <0 if KO, >0 if OK
|
||||
*/
|
||||
function _create($user, $fk_product, $entrepot_id, $qty, $type, $price=0, $label='')
|
||||
@ -197,13 +197,13 @@ class MouvementStock
|
||||
// Add movement for sub products
|
||||
if (! $error && $conf->global->PRODUIT_SOUSPRODUITS)
|
||||
{
|
||||
$error = $this->_createSubProduct($user, $fk_product, $entrepot_id, $qty, $type, 0); // pmp is not change for subproduct
|
||||
$error = $this->_createSubProduct($user, $fk_product, $entrepot_id, $qty, $type, 0, $label); // pmp is not change for subproduct
|
||||
}
|
||||
|
||||
// composition module (this is a non official external module)
|
||||
if (! $error && $qty < 0 && $conf->global->MAIN_MODULE_COMPOSITION)
|
||||
{
|
||||
$error = $this->_createProductComposition($user, $fk_product, $entrepot_id, $qty, $type, 0); // pmp is not change for subproduct
|
||||
$error = $this->_createProductComposition($user, $fk_product, $entrepot_id, $qty, $type, 0, $label); // pmp is not change for subproduct
|
||||
}
|
||||
|
||||
if (! $error)
|
||||
@ -221,10 +221,11 @@ class MouvementStock
|
||||
|
||||
|
||||
/**
|
||||
* \brief Create movement in database for all subproducts
|
||||
* \return int <0 si ko, 0 si ok
|
||||
* Create movement in database for all subproducts
|
||||
* @param label Label of stock movement
|
||||
* @return int <0 if KO, 0 if OK
|
||||
*/
|
||||
function _createSubProduct($user, $idProduct, $entrepot_id, $qty, $type, $price=0)
|
||||
function _createSubProduct($user, $idProduct, $entrepot_id, $qty, $type, $price=0, $label='')
|
||||
{
|
||||
$error = 0;
|
||||
$pids = array();
|
||||
@ -256,7 +257,7 @@ class MouvementStock
|
||||
// Create movement for each subproduct
|
||||
foreach($pids as $key => $value)
|
||||
{
|
||||
$this->_create($user, $pids[$key], $entrepot_id, ($qty * $pqtys[$key]), $type, 0);
|
||||
$this->_create($user, $pids[$key], $entrepot_id, ($qty * $pqtys[$key]), $type, 0, $label);
|
||||
}
|
||||
|
||||
return $error;
|
||||
@ -264,12 +265,13 @@ class MouvementStock
|
||||
|
||||
|
||||
/**
|
||||
* \brief Cree un mouvement en base pour toutes les compositions de produits
|
||||
* \return int <0 si ko, 0 si ok
|
||||
* Cree un mouvement en base pour toutes les compositions de produits
|
||||
* @param label Label of stock movement
|
||||
* @return int <0 if KO, 0 if OK
|
||||
*/
|
||||
function _createProductComposition($user, $fk_product, $entrepot_id, $qty, $type, $price=0)
|
||||
function _createProductComposition($user, $fk_product, $entrepot_id, $qty, $type, $price=0, $label='')
|
||||
{
|
||||
dol_syslog("MouvementStock::_createProductComposition $user->id, $fk_product, $entrepot_id, $qty, $type, $price");
|
||||
dol_syslog("MouvementStock::_createProductComposition $user->id, $fk_product, $entrepot_id, $qty, $type, $price, $label");
|
||||
$products_compo = array();
|
||||
|
||||
$sql = "SELECT fk_product_composition, qte, etat_stock";
|
||||
@ -295,7 +297,7 @@ class MouvementStock
|
||||
// Create movement for each subproduct
|
||||
foreach($products_compo as $product)
|
||||
{
|
||||
$this->_create($user, $product->fk_product_composition, $entrepot_id, ($qty*$product->qte), $type, 0);
|
||||
$this->_create($user, $product->fk_product_composition, $entrepot_id, ($qty*$product->qte), $type, 0, $label);
|
||||
}
|
||||
|
||||
return 0;
|
||||
@ -303,12 +305,13 @@ class MouvementStock
|
||||
|
||||
|
||||
/**
|
||||
* \brief Decrease stock for product and subproducts
|
||||
* \return int <0 if KO, >0 if OK
|
||||
* Decrease stock for product and subproducts
|
||||
* @param label Label of stock movement
|
||||
* @return int <0 if KO, >0 if OK
|
||||
*/
|
||||
function livraison($user, $fk_product, $entrepot_id, $qty, $price=0)
|
||||
function livraison($user, $fk_product, $entrepot_id, $qty, $price=0, $label='')
|
||||
{
|
||||
return $this->_create($user, $fk_product, $entrepot_id, (0 - $qty), 2, $price);
|
||||
return $this->_create($user, $fk_product, $entrepot_id, (0 - $qty), 2, $price, $label);
|
||||
}
|
||||
|
||||
|
||||
@ -316,9 +319,9 @@ class MouvementStock
|
||||
* \brief Increase stock for product and subproducts
|
||||
* \return int <0 if KO, >0 if OK
|
||||
*/
|
||||
function reception($user, $fk_product, $entrepot_id, $qty, $price=0)
|
||||
function reception($user, $fk_product, $entrepot_id, $qty, $price=0, $label='')
|
||||
{
|
||||
return $this->_create($user, $fk_product, $entrepot_id, $qty, 3, $price);
|
||||
return $this->_create($user, $fk_product, $entrepot_id, $qty, 3, $price, $label);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user