Prix par quantité et non par client

Bonjour @tuxgasy,

Le tarif dégressif s’est arrêté de marcher je viens de m’en rendre compte. Est-ce dû à la dernière version installée pour corriger le bug ?

J’ai 3 tarifs qui sont génériques (pour tout le monde, tarif dégressif suivant le volume), et 1 tarif qui s’applique uniquement à un client. Ce dernier marche mais pas ceux qui doivent s’appliquer à tout le monde.

Bonsoir,

Je viens de constater ça mais uniquement au niveau des factures. Pour les commandes, les tarifs s’appliquent sans problème.
Est-ce bien cela le bug que vous avez ?

J’ai le problème au niveau des commandes également. Aucun tarif ne s’applique à l’heure actuelle.

Je ne sais pas trop à quand cela remonte mais ça pourrait-être lié à la dernière MAJ que vous aviez mis à disposition ?

Merci,

La dernière mise à jour concerne les bases de données MySQL. Je viens de tester aussi sous un serveur MySQL avec Dolibarr 5.0.1, je n’ai que le bug avec les factures.

Vous êtes bien sous quelle version de Dolibarr ?
Envoyez-moi un mail. J’essayerai de vous faire une version de debug d’ici demain.

Bonjour,
Sur les proposition commerciales ça ne marche pas…

Tarifs dégressifs : 1.3.7
Dolibarr : 4.0.1

Merci,

Ce bug a été corrigé dans la version 1.3.8.
Je viens de mettre en ligne la version 1.3.10 qui corrige le bug sur les factures.
Si vous avez toujours le bug, envoyez-moi un mail pour que je vous envoie une version pour debuger le problème.

La 1.3.10 a corrigé le bug de mon côté. Merci !

Je n’arrive pas à supprimer des tiers et ce depuis un moment. Je viens de regarder les logs et de m’y remettre, et cela vient d’un hook du module pricelist qui génère une mauvaise ligne, je pense qu’il y a du CASCADE et donc si je supprime un tiers, cela doit supprimer les prix spécifiques entrés pour ce client :

2017-06-27 13:04:53 INFO 91.160.90.29 --- Access to /dolibarr/htdocs/societe/soc.php 2017-06-27 13:04:53 DEBUG 91.160.90.29 sql=SELECT transkey, transvalue FROM llx_overwrite_trans where lang='fr_FR' 2017-06-27 13:04:53 DEBUG 91.160.90.29 Menubase::menuLoad mymainmenu=companies myleftmenu= type_user=0 menu_handler=eldy tabMenu size=0 2017-06-27 13:04:53 DEBUG 91.160.90.29 sql=SELECT m.rowid, m.type, m.module, m.fk_menu, m.fk_mainmenu, m.fk_leftmenu, m.url, m.titre, m.langs, m.perms, m.enabled, m.target, m.mainmenu, m.leftmenu, m.position FROM llx_menu as m WHERE m.entity IN (0,1) AND m.menu_handler IN ('eldy','all') AND m.usertype IN (0,2) ORDER BY m.position, m.rowid 2017-06-27 13:04:53 DEBUG 91.160.90.29 ExtraFields::fetch_name_optionals_label 2017-06-27 13:04:53 DEBUG 91.160.90.29 sql=SELECT rowid,name,label,type,size,elementtype,fieldunique,fieldrequired,param,pos,alwayseditable,perms,list,ishidden FROM llx_extrafields WHERE entity IN (0,1) AND elementtype = 'societe' ORDER BY pos 2017-06-27 13:04:53 INFO 91.160.90.29 Loading hook:actions_pricelist.class.php 2017-06-27 13:04:53 DEBUG 91.160.90.29 sql=SELECT rowid, canvas FROM llx_societe WHERE entity IN (1) AND rowid = 251 2017-06-27 13:04:53 INFO 91.160.90.29 HookManager::executeHooks method=doActions action=confirm_delete context=thirdpartycard:globalcard:main 2017-06-27 13:04:53 DEBUG 91.160.90.29 Call method doActions of class ActionsPriceList, module=pricelist, hooktype=addreplace 2017-06-27 13:04:53 DEBUG 91.160.90.29 BEGIN Transaction 2017-06-27 13:04:53 DEBUG 91.160.90.29 sql=DELETE FROM llx_pricelist WHERE fk_soc = 2017-06-27 13:04:53 ERR 91.160.90.29 DoliDBMysqli::query SQL Error message: DB_ERROR_SYNTAX You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 2017-06-27 13:04:53 DEBUG 91.160.90.29 ROLLBACK Transaction 2017-06-27 13:04:53 INFO 91.160.90.29 --- End access to /dolibarr/htdocs/societe/soc.php

Du coup la transaction de passe pas et il y a un rollback, et mon tiers n’est donc pas supprimer.

Merci,

Du coup en commentant ce code dans pricelist/class/actions_pricelist.class.php ça marche, mais un fix serait mieux :happy:

if($action == 'confirm_delete' and $confirm == 'yes' and $user->rights->societe->supprimer){
	$sql = "DELETE FROM ".MAIN_DB_PREFIX."pricelist";
	$sql.= " WHERE fk_soc = ".$object->id;

	$this->db->begin();
	$resql = $this->db->query($sql);

	if(!$resql){
		setEventMessage("Error ".$this->db->lasterror(), 'errors');
		$this->db->rollback();
		header('Location: '.DOL_URL_ROOT.'/societe/soc.php?socid='.$object->id);
		exit;
	}else{
		$this->db->commit();
	}
}

Deux option sont disponible dans le core en expérimental

  • PRODUIT_CUSTOMER_PRICES_BY_QTY ► If price per quantity ► Experimental
  • PRODUIT_CUSTOMER_PRICES_BY_QTY_MULTIPRICES ► If price per quantity and customer ► Experimental