prix client selon la quantité

Bonjour,

Pour la gestion de mon entreprise, j’ai choisi d’utiliser Dolibarr 3.0.0 sur une base Postgres.
Les fonctionnalités et l’ergonomie me conviennent et ont orienté mon choix.
De plus, avoir un système ouvert permet de l’adapter au mieux à son environnement .

Il manquait juste la possibilité d’avoir des prix en fonction des quantités.
Après quelques recherches sur internet, je n’ai rien vu de très convainquant et j’ai donc décidé de modifier Dolibarr pour intégrer cette fonctionnalité.

Le principe que j’ai retenu est de conserver l’esprit des liste de prix de Dolibarr.
J’ai donc ajouté, à chaque niveau de prix, la possibilité d’avoir une liste de prix selon la quantité, le prix par défaut étant le prix du niveau.

Je vous fait parvenir les sources des modules php modifiés ( prix_selon_quantite.tgz ) avec la liste des modifs ( fichier dolibarr_psq.csv ) ainsi que le code sql de la table pour ces nouveaux prix ( PSQ_table_et_sequence.sql )

Toutes les modifications dans les modules sont encadrées par les commentaires
// PSQxxxD
et
// PSQxxxF

où xxx est le numéro de la modif, D pour début et F pour fin.

Je n’ai pas géré l’internationalisation.

En espérant que mon travail participera à l’amélioration de cet excellent produit.

Pièces jointes :

2 « J'aime »

Pas mal! Je pense que beaucoup de personnes seront intéressées par cette fonctionnalité!

Excellent, je parcoure le forum et je tombe sur 2 modules qui me seront plus qu’utiles !

C’est donc un prix par niveaux (groupes de clients par exemple) qui auront un prix selon la qté que l’on ajoute sur la propale ou la commande et qui se définit automatiquement ?
(c’est un peu comme le tier pricing de magento)

Y a t-il plusieurs niveaux de quantité ?
Niveau 1 : Qté <5 = prix 10€ / Qté>=5 = prix 8€ / Qté>=20 = prix 6€ ?
combien de paliers sont possibles ?
Comment la réduc se définit : en prix unitaire, pas en %age j’espère ?

PS : un petit module maintenant pour un prix client éditable pour chaque client ET selon la quantité ?

Bravo et
Merci encore Jeff !

bonjour,

On peut mettre autant de fourchette de quantité que l’on veut.

Chaque niveau a sa liste de fourchette de quantité/prix.

Pour d’autres modules, il faut s’adresser à des développeurs :wink:

bien cordialement,

Pourriez-vous poster votre module sur Dolistore afin de lui donner plus de visibilité? Je suis persuadé qu’il pourrait être utile à de nombreux utilisateurs, mais peu parcourent le forum régulièrement…

Bonjour,
un module a t’il été créé pour la version 3.1 ??

Bonjour,

Dés que j’aurai effectué ma migration vers 3.1, je mettrai à jour ma version et ferai suivre les modifications.

Bien cordialement,

Merci beaucoup Jeff, ce module va vraiment nous servir, nous avons toujours 3 niveaux de prix (3types de clients différents) et des prix différents sur la quantité pour chaque niveau.

Pourriez vous me dire, comment dans la base de données et dans quelle(s) table(s) votre module aura une influence, pour que je puisse organiser mes données de prix en conséquence ?
Peut être un exemple de table modifiée, ou une capture d’écran ?

Merci d’avance, vous pensez pouvoir porter quand le module sur la 3.1 ?

Hubert

Avez-vous migré vers la 3.1 et mis à jour votre module ? Si vous le postiez sur Dolistore, je suis certain que vous aurez des acheteurs (moi le premier) !

Merci d’avance

bonjour

j’ai effectué ma migration en version 3.1.0 … en pièce jointe vous trouverez un fichier comprenant la liste des modifications, les modules modifiés ainsi que la requete sql de génération de la table

Bonne mise à jour :wink:

Cordialement,

Pièces jointes :

1 « J'aime »

Merci à tous!!

Merci beaucoup!

J’ai créé la table product_price_by_qty mais j’ai un problème:
les champs price_by_qty et rowid ne sont pas ajoutés à la table product_price malgré le remplacement des fichiers par ceux fournis par jeff.
Du coup j’ai un accès à la base en erreur et le module ne fonctionne pas.
Pouvez-vous m’aider?
Merci!

Config:
Doli 3.0.0 sous OVH mutualisé
PHP 5.2.17

Bonjour,

Désolé pour la ma réponse tardive mais mieux vaut tard que jamais.

Il semblerait que le nom de votre table soit faux : il s’agit de la table llx_product_price_by_qty et non product_price_by_qty.

Bien cordialement,

Bonjour,

J’ai bien vu et chargé votre zip pour la version 3.1.0
Je suis novice, ma version est sur mon poste (OSX 10.6.8), c’est la version Dolibar 3.1.0 pour mac OS « standard ».

J’ai bien remplacé les différents fichiers dans les répertoires d’installation, mais je ne sais pas comment exécuter la requète sql de génération de la table « PSQ_table_et_sequence.sql »

Du coup, bien sur ma base plante. Si quelqu’un voulait bien m’indiquer la marche à suivre, ce serait parfait.

A bientôt.
Merci pour le boulot de tous

Bonjour,

Pour passer une requête SQL sur la nbase de donnée, il faut utiliser un outil permettant l’acces à la base
pour mysql, il y a mysql ( ligne de commande ), phpmyadmin (interface web )
pour postgres, il ya psql (ligne de commande ), pgAdmin III ( interface graphique )

Bien cordialement,

Merci de votre réponse.

J’ai donc bien pu lancer la requête sql par le « terminal » :

mac-pro-de-jp:~ j-phi$ /Applications/MAMP/Library/bin/mysql dolibarr -h localhost -P 8889 -u dolibarr -proot < /sv/PSQ_table_et_sequence.sql

J’obtiens l’erreur suivante :

ERROR 1064 (42000) at line 5: 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 ‹ without time zone,
price numeric(24,8) DEFAULT 0,
price_ttc numeric(24,8) DE › at line 5

Je précise que l’ensemble des fichiers .php a bien été copié dans les bons répertoires par remplacement (serveurs non activés).
Ne sachant pas où le copier j’ai mis le fichier dolibarr_psq.csv dans htdos.

Merci de votre aide, à bientôt.

J-Philippe

bonjour,

le fichier csv est luste une indication sur les modifications, donc pas d’incidence sur dolibarr.

la requête PSQ_table_et_sequence.sql est une requète pour postgres.
Pour mysql il faut supprimer tous les
- « without time zone »
- « ::numeric »
- " WITH ( OIDS=FALSE )"

les commandes ALTER TABLE sont inutiles car le créateur est dolibarr dans votre cas.

les commandes « create sequence » n’existent pas sur mysql, et ne sont pas utiles pour vous car la colonne rowid est une primary key definie en « serial » équivalent à « BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE »

en espérant avoir répondu à vos attentes

bien cordialement,

PSQ_table_et_sequence.sql.txt (819 Bytes)
[attachment]PSQ_table_et_sequence.sql[/attachment]
Merci de votre aide …

J’ai modifié la séquence sql comme indiqué, puis je l’ai exécute la requête après avoir restauré la base.

mac-pro-de-jp:~ j-phi$ /Applications/MAMP/Library/bin/mysql dolibarr -h localhost -P 8889 -u dolibarr -proot < /sv/PSQ_table_et_sequence.sql

Il reste une erreur :

ERROR 1064 (42000) at line 5: 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 '(999999999),
CONSTRAINT llx_product_price_by_qty_pkey PRIMARY KEY (rowid)
)

)’ at line 9

Une aide pour résoudre ce dernier point me serait utile, je ne connais pas mysql.

PJ : requête modifiée

Merci
J-Philippe

Re bonjour,

J’ai essayé d’avancer un peu en modifiant la syntaxe de définition de qty_max (remplacement de ‹ 9999999 › par 99999).

Je suis surpris, la requête sql modifiée selon vos recommandations (suppression des commandes ALTER TABLE et create sequence), comporte 2 fois la même CREATE TABLE llx_product_by_qty.

J’ai donc essayé la séquence sql avec 1x la commande, et avec 2x.

Avec 1 commande la requête sql est exécutée sans erreur.
Avec 2 commandes la requête sql est exécutée avec une erreur à la dernière ligne indiquant que la table existe déjà (bien sûr).

Quel que soit la requète (1 ou 2), lors de la création d’un produit, voici le résultat :
[color=#ff0000]Dolibarr a détecté une erreur technique.
Voici les informations qui pourront aider au diagnostic:
Date: 20120925004423
Dolibarr: 3.1.0
Niveau de fonctionnalités: 0
PHP: 5.2.5
Server: Apache/2.2.6 (Win32) PHP/5.2.5

Url sollicitée: /dolibarr/product/fiche.php
Referer: http://localhost:88/dolibarr/product/fiche.php?leftmenu=product&action=create&type=0
Gestionnaire de menu: eldy_backoffice.php

Type gestionnaire de base de données: mysqli
Requête dernier accès en base en erreur: INSERT INTO llx_product_price(price_level,date_price,fk_product,fk_user_author,price,price_ttc,price_base_type,tosell,tva_tx,recuperableonly, localtax1_tx, localtax2_tx, price_min,price_min_ttc,price_by_qty) VALUES(1, 20120925004423,2,1,10,11.96,‹ HT ›,1,19.6,0, 0,0,0,0,0)
Code retour dernier accès en base en erreur: DB_ERROR_NOSUCHFIELD
Information sur le dernier accès en base en erreur: Unknown column ‹ price_by_qty › in ‹ field list ›[/color]

J’ai aussi fait l’essai sur base MAC OS et Windows 7 : idem

PJ : requête SQL modifié avec 2x CREATE TABLE.

Un peu d’aide pour terminer l’installation de ce module serait la bienvenue.

Merci
J-Philippe

Pièces jointes :

Bonjour Jeff,

Je n’ai pas regardé votre code, mais il me semble que votre gestion des prix de vente par quantité devrait être facilement intégrable à dolibarr.

Seriez vous d’accord pour que ce soit proposé à l’intégration sur la branche develop ?
Si vous n’avez pas le temps, je veux bien m’en charger.

Cordialement,
Christophe