Bonjour
Etant dans le besoin de faire des insertions de lignes dans les propales
j’ai réussi non sans mal à modifier le code afin de l’optenir.
Si cela intéresse qq je fais une copie du code que j’ai rajouté.
Juste avant l’icone img_edit pour les modifications de la ligne j’ai rajouté une icone img_insert avec action insertline afin de pouvoir insérer une ligne à l’endroit où je clique.
dans propal.php ligne 693
if ($_GET[‹ action ›] == ‹ insertline › && $user->rights->propale->creer)
{
$propal = new Propal($db, ‹ ›, $_GET[« propalid »]);
$propal->fetch($_GET[‹ propalid ›]);
$propal->line_insert($_GET[‹ ligne ›]);
if ($_REQUEST['lang_id'])
{
$outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf);
$outputlangs->setDefaultLang($_REQUEST['lang_id']);
}
propale_pdf_create($db, $propal->id, $propal->modelpdf, $outputlangs);
dans propal.class.php ligne 848
function line_insert($rowid)
{
$this->line_order();
/\* Lecture du rang de la ligne */
$sql = 'SELECT rang FROM '.MAIN_DB_PREFIX.'commandedet';
$sql .= ' WHERE rowid ='.$rowid;
$resql = $this->db->query($sql);
if ($resql)
{
$row = $this->db->fetch_row($resql);
$rang = $row[0];
}
if ($rang > 0 )
{
$sql = 'UPDATE '.MAIN_DB_PREFIX.'commandedet SET rang = rang \+ 1';
$sql .= ' WHERE fk_commande = '.$this->id;
$sql .= ' AND rang >= '.($rang );
if ($this->db->query($sql) )
{
}
else
{
dolibarr_print_error($this->db);
}
}
}
Je suppose que pour les commandes achats cela devrait fonctionner de la même manière.
La raison est la suivante:
Image un commercial qui tape un devis de 50 lignes et il veut rajouter un détails au tout début de son devis, il va devoir ajouter une ligne à la fin du devis et cliquez 51 fois sur l’icone up pour arriver au début de son devis.
Effectivement je n’ai pas coller la bonne fonction line-insert
Pour l’img-insert j’ai repris l’icône d’information (Désolé j’ai pas mieux)
donc dans propal.class.php
ligne 720
function line_insert($rowid)
{
$this->line_order();
/\* Lecture du rang de la ligne */
$sql = 'SELECT rang, fk_propal FROM '.MAIN_DB_PREFIX.'propaldet';
$sql .= ' WHERE rowid ='.$rowid;
$resql = $this->db->query($sql);
if ($resql)
{
$row = $this->db->fetch_row($resql);
$rang = $row[0];
$fk_propal = $row[1];
}
if ($rang > 0 )
{
$sql = 'UPDATE '.MAIN_DB_PREFIX.'propaldet SET rang = rang \+ 1 ';
$sql .= ' WHERE fk_propal = '.$this->id;
$sql .= ' AND rang >= '.($rang );
if ($this->db->query($sql) )
{
$sql = 'INSERT INTO '.MAIN_DB_PREFIX."propaldet (fk_propal, rang, fk_product)";
$sql.= " VALUES (".$fk_propal.",".$rang. ",null)";
if ($this->db->query($sql) )
{
$sql = 'SELECT rowid FROM '.MAIN_DB_PREFIX.'propaldet ORDER BY rowid DESC LIMIT 1';
$resql = $this->db->query($sql);
if ($resql)
{
$row = $this->db->fetch_row($resql);
$_GET[‹ ligne ›] = $row[0];