Jump to content

[RESOLU] Limiter moyen de paiement à un produit


Recommended Posts

Bonjour,

Quelle syntaxe utiliser dans paiement.php pour limiter l'execution de la fonction à un produit....

J'ai mis le get id_product pour récupérer l'id du produit puis je cherche if !$id-product==18 alors retour... mais àcela ne marche pas....

Qqn saurait-il la bonne syntaxe ??

[EDIT] La syntaxe que j'ai utilisée est :

$product = new Product(intval($_GET['id_product']), true, intval($cookie->id_lang));
if (!$id_product==18)



Ci dessus le code que je met pour restraindre un moyen de payment à un produit... Plus de parse error mais il ne reconnait pas mon produit 18 et me renvoie à l'authentification (c'est le code en cas d'erreur...)... Est ce que je dis bien si ce n'est pas le produit 18 avec ce code et est le bonne syntaxe pour récupérer son id ?
Je l'ai mis juste avant d'executer le moyen de payement

Link to comment
Share on other sites

Bon, je viens de me dire que c'était peu-être $product... Bin non,

Avant avec id_product, j'étais systématiquement renvoyer vers mon authentification... mais si je met seulement product... Là je passe toujours....

Je passe à côté de qqch... mais pas à l'aise du tout avec les variables... Pourtant l'id_product est forcément connue dans le processus order...

Un petit coup d'oeil à mon code et une propos... ;)

Link to comment
Share on other sites

Je relance le post car bien qu'ayant épluché toute la doc de phpdebutant.org et bien compris la notion de variable, je n'arrive pas à transposer... Entre les pages .php et les .tpl, je ne sais où poser une condition et sous quel forme pour limiter l'affichage d'un mode de paiement à un seule article de ma boutique.

Il faut que le client lorsqu'il choisit l'article 18 puisse choisir le moyen de paiement A.
Si il choisit l'article 1 à 17, il ne peut que payer avec moyen B ou C.

Faut-il intervenir dans order.php ou dans le php du moyen de paiement. Pb de variable : $id_product = 18...
Je n'arrive pas à la voir dans moyenA.php ??? et des que je touche au tpl... soit j'ai Parse error, soit page blanche...

Link to comment
Share on other sites

Bonsoir Yoya,

Où ? Quoi ? et comment et bien mon souci...

Je pensais l'éxécuter en début de payment.php pour que si le client à choisi un article incompatible avec le mode de payment, il soit renvoyer au choix des payments...

Le nec plus serait que j'arrive à n'afficher ce mode de payment que pour l'article désigné... mais cela veut dire encore plus de modif et vu que j'arrive déjà pas une manip aussi simple... :(

Link to comment
Share on other sites

Yoya,

Quelle syntaxe utiliserais tu pour rédiger le code suivant :
- récupérer la valeur id du produit (sous forme d'entier) du panier de la commande en cours
- si cette valeur = 18 alors n'execute pas la fonction (soit retour, soit message erreur et retour...)
- sinon continu est execute le .tpl suivant.


En gros en "français" dans le texte, voici ce que je cherche à rédiger au début de payment.php (apres les lignes /config.inc et nécessaire au bon affichage de ma page).

La question est : $cart doit être présente puisqu'on en est à l'étape 3 de order.php, id_product doit également être associé pour que soit généré la commande en BO avec nom du produit, Qt, nom client, etc...

Donc selon mon analyse de pied nicklé... ;) ... Je me débrouille comme une patata avec smarty, get_ et global & cookies (miam...)... ;)

Une ligne de code SVP que j'arrête de copier n'importe quoi dans d'autres fonction...

Yoya, je suis certain que tu as ta petite idée...

Link to comment
Share on other sites

Bonsoir,

Je joint un fichier, qui si j'ai bien compris, permet de reprendre le détails de la commande après payment pour afficher un résumé de celle ci.

NE PAS TELECHARGER POUR INSERER DANS UNE BOUTIQUE

IL S'AGIT D'UNE PISTE POUR REGLER LE SUJET DE CE POST

Don't take it for your shop, it's not a MOD.

Puis-je m'inspirer de ce code pour associer un moyen de payment à un article défini ?
Et plus particulièrement des lignes ci dessous ???

>{capture name=path}{l s='Your shopping cart'}{/capture}
{include file=$tpl_dir./breadcrumb.tpl}

{l s='Shopping cart summary'}

{assign var='current_step' value='summary'}
{include file=$tpl_dir./order-steps.tpl}

{if isset($lastProductAdded) AND $lastProductAdded}
   {foreach from=$products item=product}
       {if $product.id_product == $lastProductAdded}

</pre>
<table>getProductLink($product.id_product, $product.link_rewrite, $product.category)|escape:'htmlall':'UTF-8'}">getImageLink($product.link_rewrite, $product.id_image, 'small')}" alt="{$product.name|escape:'htmlall':'UTF-8'}" />
getProductLink($product.id_product, $product.link_rewrite, $product.category)|escape:'htmlall':'UTF-8'}">{$product.name|escape:'htmlall':'UTF-8'}
                       {if $product.attributes}getProductLink($product.id_product, $product.link_rewrite, $product.category)|escape:'htmlall':'UTF-8'}">{$product.attributes|escape:'htmlall':'UTF-8'}{/if}
</table>
<br>       {/if}<br>   {/foreach}<br>{/if}<br><br><p>
{l s='Next'} »
« {l s='Continue shopping'}
</p>

Source_possible.txt

Link to comment
Share on other sites

Salut emraud,
Pour résumer : dans ton panier tu auras plusieurs produits et si celui ci contient le produit avec l'id '18', les choix de paiements sont modifiés (par exemple pas de paypal mais Atos et Cheque OK).
Est ce bien celà ?

Cdlt,
Pierre.

Link to comment
Share on other sites

Dans tous les cas tu peu faire quelque chose comme çà dans un fichier .php :

$products = $cart->getProducts();
foreach ($products AS $product) // parcours tout les produits du panier
{
   if(intval($product['id_product'])==18)
   {
       // produit avec l'id 18
   }
   else
   {
       // pas l'id 18
   }
}



A bientot,
Cdlt,
Pierre.

Link to comment
Share on other sites

Bonjour Yoya (Pierre),

Un grand merci de te pencher sur mon cas... sic... C'est le moins qu'on puisse dire...

J'ai tenté d'insérer ton code, et je progresse mais pas encore trouver la bonne marche à suivre.

Je te joint un fichier debug, code si dessous, commenté... Si tu pouvais y jeter un oeil et me donner l'avis de l'expert.
En tout cas maintenant, je récupère id_product dans ma page ;):)

<?php

include(dirname(__FILE__).'/../../config/config.inc.php');
include(dirname(__FILE__).'/../../header.php');
include(dirname(__FILE__).'/tablereservation.php');

// Insertion code fourni Yoya

$products = $cart->getProducts();
foreach ($products AS $product) // parcours tout les produits du panier

// Pour debug
var_dump($comb[‘id_product’]);
var_dump($id_product);
var_dump($product);
var_dump($cart);
var_dump($id_cart);
var_dump($id_order);
var_dump($id_attribut);
var_dump($order);
var_dump($name);

// Tentative foireuse de ma part : page blanche

//{
//    if(intval($product['id_product'])==18)
//    {
//        //if (!$cookie->isLogged())
   //Tools::redirect('authentication.php?back=order.php');

//$tablereservation = new TableReservation();
//echo $tablereservation->execPayment($cart);
//    }
//    else
//    {
//        Tools::redirect('authentication.php?back=order.php');
       //return;
//    }
//}


// Code d'origine : fonctionne bien.


if (!$cookie->isLogged())
   Tools::redirect('authentication.php?back=order.php');

$tablereservation = new TableReservation();
echo $tablereservation->execPayment($cart);

include_once(dirname(__FILE__).'/../../footer.php');

?>


Valeurs retournées :
NULL NULL array(47) { ["id_product_attribute"]=>  string(1) "0" ["id_product"]=>  string(2) "19" ["cart_quantity"]=>  string(1) "1" ["name"]=>  string(43) "Rendez-vous Physique ou Téléphonique hide" ["description_short"]=>  string(35) "

Ceci est la réservation RDV
" ["available_now"]=> string(39) "Service Gratuit sans obligation d'achat" ["available_later"]=> string(0) "" ["id_category_default"]=> string(1) "1" ["id_supplier"]=> string(1) "0" ["id_manufacturer"]=> string(1) "0" ["id_tax"]=> NULL ["on_sale"]=> string(1) "0" ["ecotax"]=> string(4) "0.00" ["quantity"]=> int(1) ["price"]=> string(8) "0.010000" ["reduction_price"]=> string(4) "0.00" ["reduction_percent"]=> string(1) "0" ["reduction_from"]=> string(10) "2010-05-07" ["reduction_to"]=> string(10) "2010-05-07" ["weight"]=> string(1) "1" ["out_of_stock"]=> string(1) "0" ["active"]=> string(1) "1" ["date_add"]=> string(19) "2010-05-10 15:52:00" ["date_upd"]=> string(19) "2010-05-10 16:00:37" ["tax"]=> NULL ["rate"]=> NULL ["price_attribute"]=> NULL ["quantity_attribute"]=> NULL ["ecotax_attr"]=> NULL ["id_image"]=> string(10) "fr-default" ["legend"]=> NULL ["link_rewrite"]=> string(36) "rendez-vous-physique-ou-telephonique" ["category"]=> string(4) "home" ["unique_id"]=> string(3) "190" ["id_carriercateg"]=> string(1) "8" ["order"]=> string(2) "10" ["id_carrier_default"]=> string(2) "51" ["reference"]=> string(0) "" ["supplier_reference"]=> string(0) "" ["weight_attribute"]=> string(1) "1" ["ean13"]=> string(0) "" ["stock_quantity"]=> int(88) ["price_wt"]=> string(8) "0.010000" ["total"]=> float(0.01) ["total_wt"]=> float(0.01) ["allow_oosp"]=> int(0) ["features"]=> array(0) { } } object(Cart)#8 (25) { ["id"]=> int(60) ["id_address_delivery"]=> string(2) "18" ["id_address_invoice"]=> string(2) "18" ["id_currency"]=> int(1) ["id_customer"]=> int(3) ["id_guest"]=> string(1) "2" ["id_lang"]=> int(2) ["id_carrier"]=> string(2) "51" ["recyclable"]=> string(1) "1" ["gift"]=> string(1) "0" ["gift_message"]=> string(0) "" ["date_add"]=> string(19) "2010-05-11 09:43:59" ["date_upd"]=> string(19) "2010-05-11 13:08:28" ["fieldsRequired:protected"]=> array(2) { [0]=> string(11) "id_currency" [1]=> string(7) "id_lang" } ["fieldsValidate:protected"]=> array(10) { ["id_address_delivery"]=> string(12) "isUnsignedId" ["id_address_invoice"]=> string(12) "isUnsignedId" ["id_currency"]=> string(12) "isUnsignedId" ["id_customer"]=> string(12) "isUnsignedId" ["id_guest"]=> string(12) "isUnsignedId" ["id_lang"]=> string(12) "isUnsignedId" ["id_carrier"]=> string(12) "isUnsignedId" ["recyclable"]=> string(6) "isBool" ["gift"]=> string(6) "isBool" ["gift_message"]=> string(9) "isMessage" } ["_nb_products:private"]=> int(1) ["_products:private"]=> array(1) { [0]=> array(47) { ["id_product_attribute"]=> string(1) "0" ["id_product"]=> string(2) "19" ["cart_quantity"]=> string(1) "1" ["name"]=> string(43) "Rendez-vous Physique ou Téléphonique hide" ["description_short"]=> string(35) "



J'ai raccourcie le debug car y a trop de ligne (sans intérêts), id_product est au début.

J'espère que tu sauras me dire où je cafouille ;)

Link to comment
Share on other sites

Waouh !!!!!! Yeepi ;)

Je suis tous sauf un codeur.... Pis je complique tout à force de lire des conditions supra maouss costo des vrais codeurs qui font eux des fonctions supra fonctionnelles.....

C'est OK !!! Maintenant cela fonctionne nickel !!!!

Un grand merci à toi Pierre....

Ci apres le code propre et tout beau de mon fichier payment.php (Fonctionne avec module tablereservation d'ehinarr).

CODE CORRIGE

<?php

include(dirname(__FILE__).'/../../config/config.inc.php');
include(dirname(__FILE__).'/../../header.php');
include(dirname(__FILE__).'/tablereservation.php');

$products = $cart->getProducts(); // Ajout de Yoya
foreach ($products AS $product) // parcours tout les produits du panier

if ((!$cookie->isLogged()) or (intval($product['id_product'])!=18))
   Tools::redirect('authentication.php?back=order.php');

$tablereservation = new TableReservation();
echo $tablereservation->execPayment($cart);

include_once(dirname(__FILE__).'/../../footer.php');

?>



La bonne condition pour faire au plus simple c'était :

or (intval($product['id_product'])!=18)



Avec ton ajout pour récupérer id_product... Ouha... Vais mieux dormir ce soir...

Je marque résolu dans le premier Post

Link to comment
Share on other sites

  • 1 year later...

bonjour

 

désolé de deterré ce topic. si à la place de l'id d'un produit on veut mettre un plusieurs id de categorie par default de ces produits?

disons que si un ou plusieurs produits soient dans des catégories dont les id par defaut sont 912 et 514, que l'on affiche que le moyen de paiement (chèque) .

comment faist-on? merci pour votre reponse

 

prestashop 1.3.1

Link to comment
Share on other sites

Bonjour,

J'ai moi aussi besoin d'aide mais différemment.

Je veux exclure 2 ou 3 produits spécifiques du moyen de paiment: paiment à la livraison.

Il y a bien une fonction qui exclut d'office les produits téléchargeable, donc j'imagine qu'on peut exclure aussi un produit.

Mais Où et Comment ??

 

Merci par avance de votre aide

Prestashop 1.4

Link to comment
Share on other sites

  • 11 months later...
  • 2 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...