Aide - Recherche - Membres - Calendrier
Version complète : coupons et promos
Forum osCommerce-fr > Adapter OsCommerce MS2 > Contributions
operceval
Bonjour,

sur la contrib Credit Class & Gift Voucher comment peut on appliquer un coupon remise hors promotion.

je n'ai rien vu a ce sujet dans le forum. pourtant c'est toujours génant d'appliquer un - 20 % coupon sur un produit de votre gamme qui est en promotion à -20%.

ot_coupon.php dans les modules order total

merci pour vos lumières
mtayac
Bonjour,

Une solution que j'utilise :
Créer une catégorie "Promotion" ou "Ce que l'on veut"
Mettre dans cette catégorie les articles en promo.
Leur mettre un code remise ou un prix promo.
Dans CCGV créer le coupon en sélectionnant les catégories à remiser et surtout pas la catégorie "Promotion".

Voili vouala, c'est un peu de manip, mais ça marche.
operceval
Bonjour, merci d'avoir pris du temps pour répondre.

dans mon cas cette solution ne marchera pas. puisque la base de donnée produits dépend entièrement d'une importation déjà structuré . je cherche une solution ou l'on isole les produits en promo dans le calcul de la remise.

smn
Petit up sur cette question essentielle qui me pose aussi problème.









-------------------
MS2.2
operceval
j'ai la solution mon ami, si quelqu'un avait la solution je pensais aller plus vite. du coups j'ai passé quelques heures et j'ai modifié 2 ou 3 fichiers et maintenant la remise est bien appliqué que sur les produits hors promotion. si tu veux la solution je te la mettrais en forme du mieux que je peux des que j'ai un peu de temps. mais comme je part en crête dans deux jours ça va être chaud au pire ce sera dans 15 jours. enfin si ça intéresse du monde

comme beaucoup de contributions cela a été mal pensé ou trop vite fini. du style yes ça marche mais j'ai pas étudié tous les cas.
dvf
Bonjour

Je suis fort intéréssé par cette modification !

En effet ofrir une réduction fixe sur le net et en plus sur les promotions et soldes... c est moyen

Merci d'avance smile.gif
smn
Citation (operceval @ 28 May 2008, 19:10) *
j'ai la solution mon ami, si quelqu'un avait la solution je pensais aller plus vite. du coups j'ai passé quelques heures et j'ai modifié 2 ou 3 fichiers et maintenant la remise est bien appliqué que sur les produits hors promotion. si tu veux la solution je te la mettrais en forme du mieux que je peux des que j'ai un peu de temps. mais comme je part en crête dans deux jours ça va être chaud au pire ce sera dans 15 jours. enfin si ça intéresse du monde

comme beaucoup de contributions cela a été mal pensé ou trop vite fini. du style yes ça marche mais j'ai pas étudié tous les cas.


SUUUPPPEEER operceval !

Cela dit, je ne suis pas sûr qu'on utilise la même contrib. Moi c'est CCGV(trad).

Sinon j'ouvre mon site le 5 donc ca va être difficile sauf si tu peux me copier coller l'intégralité des codes des fichiers que tu as modifiés.

A part ca.. bonne vacance si tu ne reviens pas lire mon message à temps...

Si tu utilise CCGV(trad), j'ai un autre souci avec la réduction qui ne s'applique pas à la TVA... si tu as une idée, je suis preneur... ++
operceval
ok si c'est urgent. j'ésserais d'expliquer plus tard.

donc pour faire vite je vous met le fichier ot_coupon.ph . qui est présent dans le répertoire /includes/modules/order_total
reste a changer le message "félicitation ..." je n'ai encore eu le temps

les changements ce situent dans ///////operceval////////////// actuellement 3 changement
comparez vos originaux
methode testé sur remise en somme site. les produits en promos sont ecartés de tout calcul de la contribution puisque passé à 0dans le cumul de calcul du montant sur lequel la remise est pratiqué.

n'hésitez pas a critiquer . tongue.gif


Code
code supprimé
smn
MERCI BCP operceval

J'ai légèrement adapté le code notamment je n'ai pas mis la première modif de ton code. En réalité, je n'ai pas ces lignes dans mon fichier.

Je te souhaite de bonnes vacances.

A ton retour, j'ai une question concernant le test de validité du coupon. J'aimerai mettre ce test sur la page panier suite à l'echange de ce post (http://www.oscommerce-fr.info/forum/index.php?showtopic=54943). Quand penses-tu ? Est-ce que tu peux m'aider à faire cela ?

Merci


smn
Rectification....

En réalité ta modif pose un souci lorsque l'on affiche la TVA.
En mettant le $products_price = 0; le calcul est faussé.

idem pour le calcul des frais d'expédition... ca fausse le calcul


une idée ?
jensaisrien
salut,

Comme je suis contente de trouver ce topic, je ne l'avais pas vu avant d'ouvrir un nouveau sujet.

Je ré-édite mon message car j'ai plus ou moins réussit mais la réduction ne correspond pas au pourcentage attribué.

En fait, on dirait que sur un code promo de 10/ cela donne
Prix du produit - port et sur ce résultat 10% sont appliqués et sont déduits
Exemple:
Produit 10€ et port 3€ - code de 10%
10-3 = 7 et j'ai 0.70€ d'attribué
10€
+3€
-0.7€
= 12.3€ à payer
Si en plus l'acheteur a plusieurs produits dont des promos, le résultat est pire.

Voici mon fichier:
J'ai mis plusieurs ligne :
/////////////////////operceval////////////////////////////////
Pour que ca saute aux yeux.

Code
code incomplet supprimé préférer mettre un lien vers un fichier txt
operceval
bonjour

effectivement je n'avais pas testé sur le pourcentage. désolé. un peu trop pressé de partir en vacance surement. je me remet dessus des que j'ai 1 minute. un peu débordé en ce moment.
operceval
ok, j'ai rapidement revue un point qui est meilleur

je vous remet l'intégralité du fichier / seul changement le calcul du order total de la fonction process qui servait de base de calcul avant et remplacé par la somme des produits hors promo.

par contre le coupon se valide qu'a partir du moment ou le montant des produits qui ne sont pas en promos atteignent la valeur minimal d'achat. si vous sélectionnez que des produits en promos le coupons reste inactif.

mettre votre ot_coupo du module après le sous total TTC
relage module / ne pas inclure le transport / include tax = true / re calculate taxe = none / tax class = none
test effectué sur le %

par contre la TVA n 'est plus bonne. / je me penche sur le probleme. / je veux bien un petit coup de main pour la TVA


Code
code supprimé
emerit
Bonjour, avez-vous des nouvelles ?

Pouvez-vous mettre en place les modifications de code quelque part car le code n'apparait pas sur ce topic.

Le sujet m'intéresse beacoup.

Merci
riziere
Salut !

Idem pour moi mais avec un point en plus que j'avais exposé dans ce post : http://www.oscommerce-fr.info/forum/index....showtopic=56974

Il y a un d'un point en plus que j'avais étudié : le fait d'interdit un produit en particulier par exemple les livres où je n'ai pas le droit de faire plus que 5% de réduction. Inapplicable donc avec un coupon de 20 % !
la loutre
Bonjour,

C'est un sujet qui m'interesse également. Y aurait-il le code quelque part ?
Merci blush.gif
riziere
Salut !

J'ai eu aussi ce problème et j'ai adapté un module de CCGV trad.

Le principe repose sur une case à cocher dans la fiche produit pour sisgnifier qu'il est insensible aux codes de réduction. Cela s'applique aussi bien pour les produits en promotion, les livres en tva 5.5 (réduction légiférée) ou sinon tout produits que l'on ne veux pas voir partir à -40%.

Le module de calcul des réduction récupère la liste des produits "interdits à la réduc" et va appliquer un compparatif aux produits contenu dans le panier.

Je l'ai fini ce matin et pour moi ca marche bien. Si vous avez envie de bêta tester sur vos boutiques faite moi un MP wink.gif
audenino
avec cette contribution ci tu peux exclure les produits "en promotion" de tes remises accordées.
Tu peux même n'accorder des remises que sur quelques produits sélectionnés dans ta base de données.

Discount Coupon Codes

http://www.oscommerce.com/community/contri.../search,coupons

peut être une solution plus simple ?
riziere
Citation (audenino @ 3 Oct 2008, 17:30) *
avec cette contribution ci tu peux exclure les produits "en promotion" de tes remises accordées.
Tu peux même n'accorder des remises que sur quelques produits sélectionnés dans ta base de données.

Discount Coupon Codes

http://www.oscommerce.com/community/contri.../search,coupons

peut être une solution plus simple ?


Bien...... je te dirai que maintenant c'est aussi le cas pour CCGV ! tongue.gif

Avec CCGV tu peux aussi accorder une remise spéciale à seulement certains produits mais mon problème était à l'inverse d'interdir des produits de la réduction.
Tu vois sur un livre je n'ai pas le droit de faire plus de 5% de réduction (loi Lang). Si mon coupon me colle 20% sur le bouquin je suis dans l'illégalité. D'ou ma nécessité de pourvoir proscrire une série de produit de la totalité de mes coupons.

C'est maintenant chose faite !

Pour le moment c'est encore du manuel mais quand j'aurai le temps j'adapterai encore mon code pour prendre AUTOMATIQUEMENT en compte les produits déjà en promotion. Je pense que là j'aurais quelque chose de réellement complet et fonctionnel.

Je ferai une contrib quand ce sera fait mais si en attendant vous voulez testet ma présente version, faite moi un MP wink.gif
audenino
dans cette contribution aussi tu peux aussi interdire selectivement certains produits aux remises, cela ce fait automatiquement.
va voir ici.....

http://addons.oscommerce.com/info/4269
riziere
Whouaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

J'ai regardé les screens et ca a l'air super !

Pourquoi tant de gens recommendent CCGV ? Ca a l'air tellement limité à côté de ça !

Bon je vais me le télécharger et tester la bête. P'tet je vais me remplacer ce vieux CCGV !

Enfin merci !

PS : fallait que je me tape des jours et des heures de recherches et de développement pour découvrir que j'avais un truc tout fini à dispo ! Pourquoi personne ne me l'as dit quand j'ai demandé ? huh.gif
C'est pas grave, ca serviera toujours à d'autres !
jaromyle
Après moultes recherches et essais, j'ai réussi à obtenir du module ot_coupon (catalog/includes/modules/ot_coupon.php) la non-application des réductions sur les produits déjà en promotion. J'ai effectué des modifs uniquement sur les coupons en % et sans restrictions (produits ou catégories)... La tva aussi est modifiée en conséquence.

CODE
function calculate_credit($amount) {
global $customer_id, $order, $cc_id, $languages_id;
//Start CP sale exclusion
//check if this product ($product['id']) on sale
for ($i=0; $i<sizeof($order->products); $i++) {
$specials_query = tep_db_query("select specials_new_products_price from " . TABLE_SPECIALS . " where products_id = '" . $order->products[$i]['id'] ."' and status = '1'"); }
if (tep_db_num_rows($specials_query) > 0) {
$specials = tep_db_fetch_array($specials_query);
$specialprice = $specials['specials_new_products_price'];
}
if ($specialprice > 0) {
//This item is on sale, do not apply ANY discount
$amount = $amount - ($specialprice*1.196);
} else {
//This item is of regular value, let the system proceed with applied discount
$amount = $amount;
}
//End CP sale exclusion


puis
CODE
function calculate_tax_deduction($amount, $od_amount, $method) {
global $customer_id, $order, $cc_id, $cart;
//Start CP sale exclusion
//check if this product ($product['id']) on sale
for ($i=0; $i<sizeof($order->products); $i++) {
$specials_query = tep_db_query("select specials_new_products_price from " . TABLE_SPECIALS . " where products_id = '" . $order->products[$i]['id'] ."' and status = '1'"); }
if (tep_db_num_rows($specials_query) > 0) {
$specials = tep_db_fetch_array($specials_query);
$specialprice = $specials['specials_new_products_price'];
}
//End CP sale exclusion

et dans la même fonction ajouter
CODE
if ($get_result['coupon_type'] =='P') {
$tod_amount=0;
if ($method=='Credit Note') {
$tax_desc = tep_get_tax_description($this->tax_class, $order->delivery['country']['id'], $order->delivery['zone_id']);
$tod_amount = $order->info['tax_groups'][$tax_desc] * $od_amount/100;
$order->info['tax_groups'][$tax_desc] -= $tod_amount;
} else {
//Start CP sale exclusion
if ($specialprice > 0) {
reset($order->info['tax_groups']);
while (list($key, $value) = each($order->info['tax_groups'])) {
$god_amount=0;
$tax_rate = tep_get_tax_rate_from_desc($key);
$net = $tax_rate * $order->info['tax_groups'][$key];
if ($net>0) {
$god_amount = ($order->info['tax_groups'][$key] * $get_result['coupon_amount']/100);
$tod_amount += $god_amount;
$order->info['tax_groups'][$key] = $order->info['tax_groups'][$key] - $god_amount+(($specialprice*0.196) * $get_result['coupon_amount']/100);
}} } else {
//End CP sale exclusion


sans oublier pour finir
CODE
//Start CP sale exclusion
}
//End CP sale exclusion
}
}
}
//$order->info['total'] -= $tod_amount; // CP ajustement total pour calcul TVA
$order->info['tax'] -= $tod_amount;
}
}
}
}
return $tod_amount;
}


Ce n'est pas du code de haute voltige mais ça a le mérite de fonctionner... ou d'être une piste à reprendre !
elsadoune
Bonjour,
c'est au moment de la création du coupon
on peut valider les catégories qui permettent la remise
pour exclure une catégorie ou des promotions il faudra aller ds le code et rajouter la fonction tep_draw_pull_down_exclude()
Rien de bien compliqué
A te lire
Nicolas
jolilo
Bonsoir,

je relance ce post car la restriction sur les réductions est superbes mais j'utilise qtpro est donc des options.
du coup la restriction ne s'applique pas à tous mes articles avec option.


si quelqu'un passe par là.

merci
jolilo
Bonjour,

en fait le probleme vient du module specials qui ne prend pas en compte les attributs.
Du coup je ne peux pas faire la restriction sur les attributs.

florian
jaromyle
Bonjour,

Je viens de m'apercevoir qu'une partie du code que j'utilise comporte quelques lacunes... le montant de la promo est erroné lorsqu'un article déjà en promo est en plusieurs qtés et selon l'ordre d'intégration au panier des articles (soldés ou non= ! Le code modifié (qui après de multiples config testées semble fonctionner) :

//Start CP sale exclusion
//check if this product ($product['id']) on sale
for ($i=0, $n=sizeof($order->products); $i<$n; $i++) {
if (isset($order->products[$i]['id'])) {
$specials_query = tep_db_query("select specials_new_products_price from " . TABLE_SPECIALS . " where products_id = '" . $order->products[$i]['id'] ."' and status = '1'");
if (tep_db_num_rows($specials_query)) {
$specials = tep_db_fetch_array($specials_query);
$specialprice = $specials['specials_new_products_price'];

if((sizeof($order->products[$i]['qty']) > 0) &&($specialprice > 0) ) {
//This item is on sale, do not apply ANY discount
$amount = $amount - ($order->products[$i]['qty']*$specialprice*1.196);
} } else {
//This item is of regular value, let the system proceed with applied discount
$amount = $amount;
}} }
//End CP sale exclusion

Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2013 Invision Power Services, Inc.