Hello tout le monde. (et vive dolibarr !! )
Bon ya rien à dire dolibarr est très bien. Mais ya quelques petites choses à revoir quand même. Donc moi j’ai choisi de faire mc bidouille et de modifier les sources à ma sauce. Ceux qui m’aiment me suive. Pareil, je suis en projet de création de boite de charpente (etude et construction bois) et je profite de ce post pour lancer mes petites modif. Je ne suis pas un pro en prog php (ni aucune autre d’ailleurs) donc je ne garanti rien de la bonne execution de dolibarr par la suite. Je post donc ma 2eme modif (en attendant de retrouver la première.
Elle permet de faire un systeme produit-ouvrage. Je l’ai testé (vite fait), ca a l’air de marcher. En gros ca prend le prix d’un produit, ca le multiplie par la qté associé au service et ca met à jour le service. Ca le fait à chaque rafraichissemant de page (ou que l’on soit dans dolibarr normalement). Donc je ne sais pas ce que ca donne avec 100000 pruduits et services… à voir (et à ameliorer). Attention quand même si vous tenez à vos trucs deja enregistré… !!! Ne m’insultez pas après !!!
donc attention les yeux…
function update_price_associateproducts()
{
$con = mysql_connect(« localhost »,« root »,« password »);
mysql_select_db(« dolibarr », $con);
$requete1 = mysql_query("SELECT * FROM llx_product_association
");
//parcours de la table produits associes
while ($r1 = mysql_fetch_array($requete1))
{
//recuperation des infos produit price pricettc pricemin priceminttc
$requete2 = mysql_query(« SELECT * FROM llx_product
WHERE rowid
= ».$r1[‹ fk_product_fils ›]);
while ($r2 = mysql_fetch_array($requete2))
{
$priceproduct=$r2[‹ price ›];
$pricettcproduct=$r2[‹ price_ttc ›];
$priceminproduct=$r2[‹ price_min ›];
$priceminttcproduct=$r2[‹ price_min_ttc ›];
$dbmajprice[$r1['fk_product_pere']]=$dbmajprice[$r1['fk_product_pere']]+$priceproduct*$r1['qty'];
$dbmajpricettc[$r1['fk_product_pere']]=$dbmajpricettc[$r1['fk_product_pere']]+$pricettcproduct*$r1['qty'];
$dbmajpricemin[$r1['fk_product_pere']]=$dbmajpricemin[$r1['fk_product_pere']]+$priceminproduct*$r1['qty'];
$dbmajpriceminttc[$r1['fk_product_pere']]=$dbmajpriceminttc[$r1['fk_product_pere']]+$priceminttcproduct*$r1['qty'];
}
}
$requete1 = mysql_query(« SELECT * FROM llx_product_association
« );
while ($r1 = mysql_fetch_array($requete1))
{
mysql_query(« UPDATE dolibarr
.llx_product
SET price
= ' ».$dbmajprice[$r1[‹ fk_product_pere ›]]. »’ WHERE llx_product
.rowid
= ».$r1[‹ fk_product_pere ›]);
mysql_query(« UPDATE dolibarr
.llx_product
SET price_ttc
= ' ».$dbmajpricettc[$r1[‹ fk_product_pere ›]]."’ WHERE llx_product
.rowid
=".$r1[‹ fk_product_pere ›]);
mysql_query(« UPDATE dolibarr
.llx_product
SET price_min
= ' ».$dbmajpricemin[$r1[‹ fk_product_pere ›]]."’ WHERE llx_product
.rowid
=".$r1[‹ fk_product_pere ›]);
mysql_query(« UPDATE dolibarr
.llx_product
SET price_min_ttc
= ' ».$dbmajpriceminttc[$r1[‹ fk_product_pere ›]]."’ WHERE llx_product
.rowid
=".$r1[‹ fk_product_pere ›]);
}
mysql_close($con);
}
update_price_associateproducts();
voila donc normalement, copier coller dans dollibar/htdocs/main.inc.php
moi je l’ai mis vers la ligne 113 sous :
analyse_sql_and_script($_GET);
analyse_sql_and_script($_POST);
et modifiez :
$con = mysql_connect(« localhost »,« root »,« password »);
avec vos trucs perso
il ne faut pas associer de produits avec d’autres produits. Je vais modifier la source pour ne plus avoir l’onglet car on ne peut pas le desactiver.
A ma grande joie, apparament cela ne modifie pas un prix enregistré dans une proposition commerciale deja établie !!
A vous de tester.
++ Baptiste