Possibilité de modifier le descriptif et le taux de tva y compris sur les lignes de produits prédéfinis.

This commit is contained in:
Laurent Destailleur 2005-09-03 15:11:03 +00:00
parent 02d6ce79ba
commit dc0774d368
2 changed files with 119 additions and 87 deletions

View File

@ -750,41 +750,68 @@ class Commande
return -1; return -1;
} }
} }
/**
* Mets à jour une ligne de commande
*
*/
function update_line($rowid, $desc, $pu, $qty, $remise_percent=0)
{
if ($this->brouillon)
{
if (strlen(trim($qty))==0)
{
$qty=1;
}
$remise = 0;
$price = round(ereg_replace(",",".",$pu), 2);
$subprice = $price;
if (trim(strlen($remise_percent)) > 0)
{
$remise = round(($pu * $remise_percent / 100), 2);
$price = $pu - $remise;
}
else
{
$remise_percent=0;
}
$sql = "UPDATE ".MAIN_DB_PREFIX."commandedet SET description='$desc',price=$price,subprice=$subprice,remise=$remise,remise_percent=$remise_percent,qty=$qty WHERE rowid = $rowid ;"; /**
if ( $this->db->query( $sql) ) * \brief Mets à jour une ligne de commande
{ * \param rowid Id de la ligne de facture
$this->update_price($this->id); * \param desc Description de la ligne
} * \param pu Prix unitaire
else * \param qty Quantité
{ * \param remise_percent Pourcentage de remise de la ligne
dolibarr_print_error($this->db); * \param tva_tx Taux TVA
} * \return int < 0 si erreur, > 0 si ok
} */
function update_line($rowid, $desc, $pu, $qty, $remise_percent=0, $tva_tx)
{
dolibarr_syslog("Commande::UpdateLine");
if ($this->brouillon)
{
$this->db->begin();
if (strlen(trim($qty))==0)
{
$qty=1;
}
$remise = 0;
$price = ereg_replace(",",".",$pu);
$subprice = $price;
if (trim(strlen($remise_percent)) > 0)
{
$remise = round(($pu * $remise_percent / 100), 2);
$price = $pu - $remise;
}
else
{
$remise_percent=0;
}
$sql = "UPDATE ".MAIN_DB_PREFIX."commandedet";
$sql.= " SET description='".addslashes($desc)."',price=$price,subprice=$subprice,";
$sql.= " remise=$remise,remise_percent=$remise_percent,qty=$qty,tva_tx='".$tva_tx."'";
$sql.= " WHERE rowid = ".$rowid;
$result=$this->db->query( $sql);
if ( $result )
{
$this->update_price($this->id);
$this->db->commit();
return $result;
}
else
{
$this->db->rollback();
dolibarr_print_error($this->db);
return -1;
}
}
else {
return -2;
}
} }

View File

@ -81,6 +81,10 @@ if ($_POST["action"] == 'add' && $user->rights->commande->creer)
$commande->add_product($_POST["idprod2"],$_POST["qty2"],$_POST["remise_percent2"]); $commande->add_product($_POST["idprod2"],$_POST["qty2"],$_POST["remise_percent2"]);
$commande->add_product($_POST["idprod3"],$_POST["qty3"],$_POST["remise_percent3"]); $commande->add_product($_POST["idprod3"],$_POST["qty3"],$_POST["remise_percent3"]);
$commande->add_product($_POST["idprod4"],$_POST["qty4"],$_POST["remise_percent4"]); $commande->add_product($_POST["idprod4"],$_POST["qty4"],$_POST["remise_percent4"]);
$commande->add_product($_POST["idprod5"],$_POST["qty5"],$_POST["remise_percent5"]);
$commande->add_product($_POST["idprod6"],$_POST["qty6"],$_POST["remise_percent6"]);
$commande->add_product($_POST["idprod7"],$_POST["qty7"],$_POST["remise_percent7"]);
$commande->add_product($_POST["idprod8"],$_POST["qty8"],$_POST["remise_percent8"]);
$commande_id = $commande->create($user); $commande_id = $commande->create($user);
@ -89,10 +93,6 @@ if ($_POST["action"] == 'add' && $user->rights->commande->creer)
$action = ''; $action = '';
} }
/*
*
*/
if ($_POST["action"] == 'setremise' && $user->rights->commande->creer) if ($_POST["action"] == 'setremise' && $user->rights->commande->creer)
{ {
$commande = new Commande($db); $commande = new Commande($db);
@ -113,47 +113,54 @@ if ($_POST["action"] == 'addligne' && $user->rights->commande->creer)
/* /*
* Ajout d'une ligne produit dans la commande * Ajout d'une ligne produit dans la commande
*/ */
$commande = new Commande($db); if ($_POST["qty"] && (($_POST["pu"] && $_POST["desc"]) || $_POST["p_idprod"]))
$ret=$commande->fetch($_POST["id"]);
if (isset($_POST["p_idprod"]))
{ {
$result = $commande->addline( $commande = new Commande($db);
$_POST["np_desc"], $ret=$commande->fetch($_POST["id"]);
$_POST["pu"],
$_POST["pqty"], if (isset($_POST["p_idprod"]))
$_POST["tva_tx"], {
$_POST["p_idprod"], $result = $commande->addline(
$_POST["premise"]); $_POST["np_desc"],
$_POST["pu"],
$_POST["qty"],
$_POST["tva_tx"],
$_POST["p_idprod"],
$_POST["remise_percent"]);
}
else
{
$result = $commande->addline(
$_POST["desc"],
$_POST["pu"],
$_POST["qty"],
$_POST["tva_tx"],
0,
$_POST["remise_percent"]);
}
} }
else
{
$result = $commande->addline(
$_POST["desc"],
$_POST["pu"],
$_POST["qty"],
$_POST["tva_tx"],
0,
$_POST["remise_percent"]);
}
} }
if ($_POST["action"] == 'updateligne' && $user->rights->commande->creer) if ($_POST["action"] == 'updateligne' && $user->rights->commande->creer && $_POST["save"] == $langs->trans("Save"))
{ {
$commande = new Commande($db,"",$_GET["id"]); $commande = new Commande($db,"",$_POST["id"]);
if ($commande->fetch($_GET["id"]) ) if (! $commande->fetch($_POST["id"]) > 0) dolibarr_print_error($db);
{
$result = $commande->update_line($_POST["elrowid"], $result = $commande->update_line($_POST["elrowid"],
$_POST["eldesc"], $_POST["eldesc"],
$_POST["elprice"], $_POST["elprice"],
$_POST["elqty"], $_POST["elqty"],
$_POST["elremise_percent"]); $_POST["elremise_percent"],
} $_POST["eltva_tx"]
else );
{
print "Erreur"; $_GET["id"]=$_POST["id"]; // Pour réaffichage de la fiche en cours d'édition
} }
if ($_POST["action"] == 'updateligne' && $user->rights->commande->creer && $_POST["cancel"] == $langs->trans("Cancel"))
{
Header("Location: fiche.php?id=".$_POST["id"]); // Pour réaffichage de la fiche en cours d'édition
exit;
} }
if ($_GET["action"] == 'deleteline' && $user->rights->commande->creer) if ($_GET["action"] == 'deleteline' && $user->rights->commande->creer)
@ -326,7 +333,7 @@ if ($_GET["action"] == 'create' && $user->rights->commande->creer)
/* /*
* *
*/ */
print '<tr><td colspan="3" align="center"><input type="submit" class="button" value="'.$langs->trans("Create").'"></td></tr>'; print '<tr><td colspan="3" align="center"><input type="submit" class="button" value="'.$langs->trans("CreateDraft").'"></td></tr>';
print "</form>\n"; print "</form>\n";
print "</table>\n"; print "</table>\n";
@ -606,8 +613,8 @@ else
print '<td align="right" width="50">'.$langs->trans('VAT').'</td>'; print '<td align="right" width="50">'.$langs->trans('VAT').'</td>';
print '<td align="right" width="80">'.$langs->trans('PriceUHT').'</td>'; print '<td align="right" width="80">'.$langs->trans('PriceUHT').'</td>';
print '<td align="right" width="50">'.$langs->trans('Qty').'</td>'; print '<td align="right" width="50">'.$langs->trans('Qty').'</td>';
print '<td align="right">'.$langs->trans('Discount').'</td>'; print '<td align="right" width="50">'.$langs->trans('Discount').'</td>';
print '<td align="right">'.$langs->trans('AmountHT').'</td>'; print '<td align="right" width="50">'.$langs->trans('AmountHT').'</td>';
print '<td>&nbsp;</td><td>&nbsp;</td>'; print '<td>&nbsp;</td><td>&nbsp;</td>';
print "</tr>\n"; print "</tr>\n";
} }
@ -617,7 +624,7 @@ else
$objp = $db->fetch_object($resql); $objp = $db->fetch_object($resql);
$var=!$var; $var=!$var;
// Affiche ligne de commande en mode non edit // Ligne en mode visu
if ($_GET['action'] != 'editline' || $_GET['rowid'] != $objp->rowid) if ($_GET['action'] != 'editline' || $_GET['rowid'] != $objp->rowid)
{ {
print '<tr '.$bc[$var].'>'; print '<tr '.$bc[$var].'>';
@ -636,11 +643,8 @@ else
print "</td>\n"; print "</td>\n";
} }
print '<td align="right">'.$objp->tva_tx.'%</td>'; print '<td align="right">'.$objp->tva_tx.'%</td>';
print '<td align="right">'.price($objp->subprice)."</td>\n"; print '<td align="right">'.price($objp->subprice)."</td>\n";
print '<td align="right">'.$objp->qty.'</td>'; print '<td align="right">'.$objp->qty.'</td>';
if ($objp->remise_percent > 0) if ($objp->remise_percent > 0)
{ {
print '<td align="right">'.$objp->remise_percent."%</td>\n"; print '<td align="right">'.$objp->remise_percent."%</td>\n";
@ -668,13 +672,14 @@ else
print '</tr>'; print '</tr>';
} }
// Affiche ligne de commande en mode non edit // Ligne en mode update
if ($_GET["action"] == 'editline' && $_GET["rowid"] == $objp->rowid) if ($_GET["action"] == 'editline' && $user->rights->commande->creer && $_GET["rowid"] == $objp->rowid)
{ {
print "<form action=\"fiche.php?id=$id\" method=\"post\">"; print '<form action="fiche.php" method="post">';
print '<input type="hidden" name="action" value="updateligne">'; print '<input type="hidden" name="action" value="updateligne">';
print '<input type="hidden" name="id" value="'.$id.'">';
print '<input type="hidden" name="elrowid" value="'.$_GET["rowid"].'">'; print '<input type="hidden" name="elrowid" value="'.$_GET["rowid"].'">';
print "<tr $bc[$var]>"; print '<tr '.$bc[$var].'>';
print '<td>'; print '<td>';
if ($objp->fk_product > 0) if ($objp->fk_product > 0)
{ {
@ -687,13 +692,13 @@ else
} }
print '<textarea name="eldesc" cols="50" rows="1">'.stripslashes($objp->description).'</textarea></td>'; print '<textarea name="eldesc" cols="50" rows="1">'.stripslashes($objp->description).'</textarea></td>';
print '<td align="right">'; print '<td align="right">';
//print $html->select_tva("tva_tx",$objp->tva_taux); print $html->select_tva("eltva_tx",$objp->tva_tx);
print $objp->tva_tx."%"; // Taux tva dépend du produit, donc on ne doit pas pouvoir le changer ici
print '</td>'; print '</td>';
print '<td align="right"><input size="5" type="text" class="flat" name="elprice" value="'.price($objp->subprice).'"></td>'; print '<td align="right"><input size="5" type="text" class="flat" name="elprice" value="'.price($objp->subprice).'"></td>';
print '<td align="right"><input size="2" type="text" class="flat" name="elqty" value="'.$objp->qty.'"></td>'; print '<td align="right"><input size="2" type="text" class="flat" name="elqty" value="'.$objp->qty.'"></td>';
print '<td align="right" nowrap><input size="1" type="text" class="flat" name="elremise_percent" value="'.$objp->remise_percent.'">%</td>'; print '<td align="right" nowrap><input size="1" type="text" class="flat" name="elremise_percent" value="'.$objp->remise_percent.'">%</td>';
print '<td align="center" colspan="3"><input type="submit" class="button" value="'.$langs->trans("Save").'"></td>'; print '<td align="center" colspan="3"><input type="submit" class="button" name="save" value="'.$langs->trans("Save").'">';
print '<br /><input type="submit" class="button" name="cancel" value="'.$langs->trans("Cancel").'"></td>';
print '</tr>'; print '</tr>';
print '</form>'; print '</form>';
} }
@ -756,8 +761,8 @@ else
print '<textarea cols="50" name="np_desc" rows="1"></textarea>'; print '<textarea cols="50" name="np_desc" rows="1"></textarea>';
print '</td>'; print '</td>';
print '<td>&nbsp;</td>'; print '<td>&nbsp;</td>';
print '<td align="right"><input type="text" size="2" name="pqty" value="1"></td>'; print '<td align="right"><input type="text" size="2" name="qty" value="1"></td>';
print '<td align="right" nowrap><input type="text" size="2" name="premise" value="0">%</td>'; print '<td align="right" nowrap><input type="text" size="2" name="remise_percent" value="0">%</td>';
print '<td align="center" colspan="3"><input type="submit" class="button" value="'.$langs->trans("Add").'"></td></tr>'; print '<td align="center" colspan="3"><input type="submit" class="button" value="'.$langs->trans("Add").'"></td></tr>';
print "</tr>\n"; print "</tr>\n";