Ajout flèches d'ordonnancement des produits sur les commandes et les propales
This commit is contained in:
parent
9df907c042
commit
ebfd553759
@ -947,13 +947,13 @@ if ($_GET['propalid'] > 0)
|
|||||||
print '<td align="right">';
|
print '<td align="right">';
|
||||||
if ($i > 0)
|
if ($i > 0)
|
||||||
{
|
{
|
||||||
print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$propal->id.'&action=up&rowid='.$objp->rowid.'">';
|
print '<a href="'.$_SERVER["PHP_SELF"].'?propalid='.$propal->id.'&action=up&rowid='.$objp->rowid.'">';
|
||||||
print img_up();
|
print img_up();
|
||||||
print '</a>';
|
print '</a>';
|
||||||
}
|
}
|
||||||
if ($i < $num_lignes-1)
|
if ($i < $num_lignes-1)
|
||||||
{
|
{
|
||||||
print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$propal->id.'&action=down&rowid='.$objp->rowid.'">';
|
print '<a href="'.$_SERVER["PHP_SELF"].'?propalid='.$propal->id.'&action=down&rowid='.$objp->rowid.'">';
|
||||||
print img_down();
|
print img_down();
|
||||||
print '</a>';
|
print '</a>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -635,6 +635,130 @@ class Commande
|
|||||||
**/
|
**/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Stocke un numéro de rang pour toutes les lignes de
|
||||||
|
* detail d'une commande qui n'en ont pas.
|
||||||
|
*/
|
||||||
|
function line_order()
|
||||||
|
{
|
||||||
|
$sql = 'SELECT count(rowid) FROM '.MAIN_DB_PREFIX.'commandedet';
|
||||||
|
$sql .= ' WHERE fk_commande='.$this->id;
|
||||||
|
$sql .= ' AND rang = 0';
|
||||||
|
$resql = $this->db->query($sql);
|
||||||
|
if ($resql)
|
||||||
|
{
|
||||||
|
$row = $this->db->fetch_row($resql);
|
||||||
|
$nl = $row[0];
|
||||||
|
}
|
||||||
|
if ($nl > 0)
|
||||||
|
{
|
||||||
|
$sql = 'SELECT rowid FROM '.MAIN_DB_PREFIX.'commandedet';
|
||||||
|
$sql .= ' WHERE fk_commande='.$this->id;
|
||||||
|
$sql .= ' ORDER BY rang ASC, rowid ASC';
|
||||||
|
$resql = $this->db->query($sql);
|
||||||
|
if ($resql)
|
||||||
|
{
|
||||||
|
$num = $this->db->num_rows($resql);
|
||||||
|
$i = 0;
|
||||||
|
while ($i < $num)
|
||||||
|
{
|
||||||
|
$row = $this->db->fetch_row($resql);
|
||||||
|
$li[$i] = $row[0];
|
||||||
|
$i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for ($i = 0 ; $i < sizeof($li) ; $i++)
|
||||||
|
{
|
||||||
|
$sql = 'UPDATE '.MAIN_DB_PREFIX.'commandedet SET rang = '.($i+1);
|
||||||
|
$sql .= ' WHERE rowid = '.$li[$i];
|
||||||
|
if (!$this->db->query($sql) )
|
||||||
|
{
|
||||||
|
dolibarr_syslog($this->db->error());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function line_up($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 > 1 )
|
||||||
|
{
|
||||||
|
$sql = 'UPDATE '.MAIN_DB_PREFIX.'commandedet SET rang = '.$rang ;
|
||||||
|
$sql .= ' WHERE fk_commande = '.$this->id;
|
||||||
|
$sql .= ' AND rang = '.($rang - 1);
|
||||||
|
if ($this->db->query($sql) )
|
||||||
|
{
|
||||||
|
$sql = 'UPDATE '.MAIN_DB_PREFIX.'commandedet SET rang = '.($rang - 1);
|
||||||
|
$sql .= ' WHERE rowid = '.$rowid;
|
||||||
|
if (! $this->db->query($sql) )
|
||||||
|
{
|
||||||
|
dolibarr_print_error($this->db);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dolibarr_print_error($this->db);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function line_down($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];
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Lecture du rang max de la facture */
|
||||||
|
$sql = 'SELECT max(rang) FROM '.MAIN_DB_PREFIX.'commandedet';
|
||||||
|
$sql .= ' WHERE fk_commande ='.$this->id;
|
||||||
|
$resql = $this->db->query($sql);
|
||||||
|
if ($resql)
|
||||||
|
{
|
||||||
|
$row = $this->db->fetch_row($resql);
|
||||||
|
$max = $row[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($rang < $max )
|
||||||
|
{
|
||||||
|
$sql = 'UPDATE '.MAIN_DB_PREFIX.'commandedet SET rang = '.$rang;
|
||||||
|
$sql .= ' WHERE fk_commande = '.$this->id;
|
||||||
|
$sql .= ' AND rang = '.($rang+1);
|
||||||
|
if ($this->db->query($sql) )
|
||||||
|
{
|
||||||
|
$sql = 'UPDATE '.MAIN_DB_PREFIX.'commandedet SET rang = '.($rang+1);
|
||||||
|
$sql .= ' WHERE rowid = '.$rowid;
|
||||||
|
if (! $this->db->query($sql) )
|
||||||
|
{
|
||||||
|
dolibarr_print_error($this->db);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dolibarr_print_error($this->db);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Lit une commande
|
* Lit une commande
|
||||||
@ -720,7 +844,7 @@ class Commande
|
|||||||
$sql.= ' FROM '.MAIN_DB_PREFIX.'commandedet as l';
|
$sql.= ' FROM '.MAIN_DB_PREFIX.'commandedet as l';
|
||||||
$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'product as p ON l.fk_product=p.rowid';
|
$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'product as p ON l.fk_product=p.rowid';
|
||||||
$sql.= ' WHERE l.fk_commande = '.$this->id;
|
$sql.= ' WHERE l.fk_commande = '.$this->id;
|
||||||
$sql.= ' ORDER BY l.rowid';
|
$sql.= ' ORDER BY l.rang';
|
||||||
$result = $this->db->query($sql);
|
$result = $this->db->query($sql);
|
||||||
if ($result)
|
if ($result)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -296,6 +296,22 @@ if ($_GET['action'] == 'modif' && $user->rights->commande->creer)
|
|||||||
$commande->reopen($user->id);
|
$commande->reopen($user->id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Ordonnancement des lignes
|
||||||
|
*/
|
||||||
|
|
||||||
|
if ($_GET['action'] == 'up' && $user->rights->commande->creer)
|
||||||
|
{
|
||||||
|
$commande = new Commande($db);
|
||||||
|
$commande->line_up($_GET['rowid']);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($_GET['action'] == 'down' && $user->rights->commande->creer)
|
||||||
|
{
|
||||||
|
$commande = new Commande($db);
|
||||||
|
$commande->line_down($_GET['rowid']);
|
||||||
|
}
|
||||||
|
|
||||||
if ($_REQUEST['action'] == 'builddoc') // En get ou en post
|
if ($_REQUEST['action'] == 'builddoc') // En get ou en post
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
@ -1090,13 +1106,24 @@ else
|
|||||||
print '<td align="right"><a href="fiche.php?id='.$id.'&action=deleteline&lineid='.$objp->rowid.'">';
|
print '<td align="right"><a href="fiche.php?id='.$id.'&action=deleteline&lineid='.$objp->rowid.'">';
|
||||||
print img_delete();
|
print img_delete();
|
||||||
print '</a></td>';
|
print '</a></td>';
|
||||||
print '<td> </td>';
|
print '<td align="right">';
|
||||||
|
if ($i > 0)
|
||||||
|
{
|
||||||
|
print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$commande->id.'&action=up&rowid='.$objp->rowid.'">';
|
||||||
|
print img_up();
|
||||||
|
print '</a>';
|
||||||
|
}
|
||||||
|
if ($i < $num_lignes-1)
|
||||||
|
{
|
||||||
|
print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$commande->id.'&action=down&rowid='.$objp->rowid.'">';
|
||||||
|
print img_down();
|
||||||
|
print '</a>';
|
||||||
|
}
|
||||||
|
print '</td>';
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
print '<td> </td>';
|
print '<td colspan="3"> </td>';
|
||||||
print '<td> </td>';
|
|
||||||
print '<td> </td>';
|
|
||||||
}
|
}
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -548,6 +548,130 @@ class Propal
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Stocke un numéro de rang pour toutes les lignes de
|
||||||
|
* detail d'une propale qui n'en ont pas.
|
||||||
|
*/
|
||||||
|
function line_order()
|
||||||
|
{
|
||||||
|
$sql = 'SELECT count(rowid) FROM '.MAIN_DB_PREFIX.'propaldet';
|
||||||
|
$sql .= ' WHERE fk_propal='.$this->id;
|
||||||
|
$sql .= ' AND rang = 0';
|
||||||
|
$resql = $this->db->query($sql);
|
||||||
|
if ($resql)
|
||||||
|
{
|
||||||
|
$row = $this->db->fetch_row($resql);
|
||||||
|
$nl = $row[0];
|
||||||
|
}
|
||||||
|
if ($nl > 0)
|
||||||
|
{
|
||||||
|
$sql = 'SELECT rowid FROM '.MAIN_DB_PREFIX.'propaldet';
|
||||||
|
$sql .= ' WHERE fk_propal='.$this->id;
|
||||||
|
$sql .= ' ORDER BY rang ASC, rowid ASC';
|
||||||
|
$resql = $this->db->query($sql);
|
||||||
|
if ($resql)
|
||||||
|
{
|
||||||
|
$num = $this->db->num_rows($resql);
|
||||||
|
$i = 0;
|
||||||
|
while ($i < $num)
|
||||||
|
{
|
||||||
|
$row = $this->db->fetch_row($resql);
|
||||||
|
$li[$i] = $row[0];
|
||||||
|
$i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for ($i = 0 ; $i < sizeof($li) ; $i++)
|
||||||
|
{
|
||||||
|
$sql = 'UPDATE '.MAIN_DB_PREFIX.'propaldet SET rang = '.($i+1);
|
||||||
|
$sql .= ' WHERE rowid = '.$li[$i];
|
||||||
|
if (!$this->db->query($sql) )
|
||||||
|
{
|
||||||
|
dolibarr_syslog($this->db->error());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function line_up($rowid)
|
||||||
|
{
|
||||||
|
$this->line_order();
|
||||||
|
|
||||||
|
/* Lecture du rang de la ligne */
|
||||||
|
$sql = 'SELECT rang 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];
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($rang > 1 )
|
||||||
|
{
|
||||||
|
$sql = 'UPDATE '.MAIN_DB_PREFIX.'propaldet SET rang = '.$rang ;
|
||||||
|
$sql .= ' WHERE fk_propal = '.$this->id;
|
||||||
|
$sql .= ' AND rang = '.($rang - 1);
|
||||||
|
if ($this->db->query($sql) )
|
||||||
|
{
|
||||||
|
$sql = 'UPDATE '.MAIN_DB_PREFIX.'propaldet SET rang = '.($rang - 1);
|
||||||
|
$sql .= ' WHERE rowid = '.$rowid;
|
||||||
|
if (! $this->db->query($sql) )
|
||||||
|
{
|
||||||
|
dolibarr_print_error($this->db);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dolibarr_print_error($this->db);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function line_down($rowid)
|
||||||
|
{
|
||||||
|
$this->line_order();
|
||||||
|
|
||||||
|
/* Lecture du rang de la ligne */
|
||||||
|
$sql = 'SELECT rang 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];
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Lecture du rang max de la facture */
|
||||||
|
$sql = 'SELECT max(rang) FROM '.MAIN_DB_PREFIX.'propaldet';
|
||||||
|
$sql .= ' WHERE fk_propal ='.$this->id;
|
||||||
|
$resql = $this->db->query($sql);
|
||||||
|
if ($resql)
|
||||||
|
{
|
||||||
|
$row = $this->db->fetch_row($resql);
|
||||||
|
$max = $row[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($rang < $max )
|
||||||
|
{
|
||||||
|
$sql = 'UPDATE '.MAIN_DB_PREFIX.'propaldet SET rang = '.$rang;
|
||||||
|
$sql .= ' WHERE fk_propal = '.$this->id;
|
||||||
|
$sql .= ' AND rang = '.($rang+1);
|
||||||
|
if ($this->db->query($sql) )
|
||||||
|
{
|
||||||
|
$sql = 'UPDATE '.MAIN_DB_PREFIX.'propaldet SET rang = '.($rang+1);
|
||||||
|
$sql .= ' WHERE rowid = '.$rowid;
|
||||||
|
if (! $this->db->query($sql) )
|
||||||
|
{
|
||||||
|
dolibarr_print_error($this->db);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dolibarr_print_error($this->db);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Recupère de la base les caractéristiques d'une propale
|
* \brief Recupère de la base les caractéristiques d'une propale
|
||||||
* \param rowid id de la propal à récupérer
|
* \param rowid id de la propal à récupérer
|
||||||
@ -653,7 +777,7 @@ class Propal
|
|||||||
$sql.= " p.rowid, p.label, p.description as product_desc, p.ref";
|
$sql.= " p.rowid, p.label, p.description as product_desc, p.ref";
|
||||||
$sql.= " FROM ".MAIN_DB_PREFIX."propaldet as d, ".MAIN_DB_PREFIX."product as p";
|
$sql.= " FROM ".MAIN_DB_PREFIX."propaldet as d, ".MAIN_DB_PREFIX."product as p";
|
||||||
$sql.= " WHERE d.fk_propal = ".$this->id ." AND d.fk_product = p.rowid";
|
$sql.= " WHERE d.fk_propal = ".$this->id ." AND d.fk_product = p.rowid";
|
||||||
$sql.= " ORDER by d.rowid ASC";
|
$sql.= " ORDER by d.rang";
|
||||||
|
|
||||||
$result = $this->db->query($sql);
|
$result = $this->db->query($sql);
|
||||||
if ($result)
|
if ($result)
|
||||||
|
|||||||
@ -203,6 +203,7 @@ ALTER TABLE llx_facture_rec ADD CONSTRAINT fk_facture_rec_fk_projet FORE
|
|||||||
ALTER TABLE llx_facture_rec ADD UNIQUE INDEX idx_facture_rec_uk_titre (titre);
|
ALTER TABLE llx_facture_rec ADD UNIQUE INDEX idx_facture_rec_uk_titre (titre);
|
||||||
|
|
||||||
alter table llx_commandedet add column coef real;
|
alter table llx_commandedet add column coef real;
|
||||||
|
alter table llx_propaldet add colmun coef real;
|
||||||
|
|
||||||
create table llx_livraison
|
create table llx_livraison
|
||||||
(
|
(
|
||||||
@ -257,3 +258,5 @@ rename table llx_accountingsystem_det to llx_accountingaccount;
|
|||||||
insert into llx_rights_def (id, libelle, module, type, bydefault, subperms, perms) values (262,'Consulter tous les clients','commercial','r',1,'voir','client');
|
insert into llx_rights_def (id, libelle, module, type, bydefault, subperms, perms) values (262,'Consulter tous les clients','commercial','r',1,'voir','client');
|
||||||
insert into llx_user_rights(fk_user,fk_id) select distinct fk_user, '262' from llx_user_rights where fk_id = 261;
|
insert into llx_user_rights(fk_user,fk_id) select distinct fk_user, '262' from llx_user_rights where fk_id = 261;
|
||||||
|
|
||||||
|
alter table llx_commandedet add column rang integer DEFAULT 0;
|
||||||
|
alter table llx_propaldet add column rang integer DEFAULT 0;
|
||||||
@ -32,5 +32,6 @@ create table llx_commandedet
|
|||||||
remise real DEFAULT 0, -- montant de la remise
|
remise real DEFAULT 0, -- montant de la remise
|
||||||
subprice real, -- prix avant remise
|
subprice real, -- prix avant remise
|
||||||
price real, -- prix final
|
price real, -- prix final
|
||||||
coef real -- coefficient de marge
|
coef real, -- coefficient de marge
|
||||||
|
rang integer DEFAULT 0
|
||||||
)type=innodb;
|
)type=innodb;
|
||||||
|
|||||||
@ -30,5 +30,7 @@ create table llx_propaldet
|
|||||||
remise_percent real DEFAULT 0, -- pourcentage de remise
|
remise_percent real DEFAULT 0, -- pourcentage de remise
|
||||||
remise real DEFAULT 0, -- montant de la remise
|
remise real DEFAULT 0, -- montant de la remise
|
||||||
subprice real, -- prix avant remise
|
subprice real, -- prix avant remise
|
||||||
price real -- prix final
|
price real, -- prix final
|
||||||
|
coef real, -- coefficient de marge
|
||||||
|
rang integer DEFAULT 0
|
||||||
)type=innodb;
|
)type=innodb;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user