Jump to content

[Appel d'offre] Dupliquer la fonction emballage cadeau


Recommended Posts

je souhaiterais dupliquer la fonction emballage cadeau pour proposer à mes clients une option d'assurance sur le transport.

j'ai donc commencé à copier tout ce que je pouvais trouver à propos des emballages cadeau en changeant el nom par assurance.

pour le moment j'ai modifier les fichiers suivants:

dans admin: adminpreferences.php

dans classes: order.php, cart.php

dans le thème: order-carrier et order-details .tpl

dans controllers: orderopccontrollers.php

enfin, j'ai ajouté un champ identique au champ "gift" dans la base ps_cart

 

malgré tout je n'arrive pas à obtenir l'ajout de mon assurance.

la checkbox apparait bien et en backoffice les champs apparaissent. par contre la checkbox ne reste pas cochée et aucune ligne supplémentaire n'apparait dans le panier, le montant total reste le même.

 

je cherche déjà à savoir si je serais passée à coté de certains fichiers à modifier, et éventuellement des infos sur les modifs coté cart.php notamment ce bout de code (c'est moi qui ai ajouté les "assurance_fees...)

 

 $order_total_discount = 0;
 if ($shrunk AND $order_total < (-$wrapping_fees - $order_total_products - $shipping_fees -$assurance_fees))
  $order_total_discount = -$wrapping_fees - $order_total_products - $shipping_fees -$assurance_fees;
 else
  $order_total_discount = $order_total;
  }
 }
 if ($type == Cart::ONLY_SHIPPING) return $shipping_fees;
 if ($type == Cart::ONLY_WRAPPING) return $wrapping_fees;
 if ($type == Cart::ONLY_assurance) return $assurance_fees;
 if ($type == Cart::BOTH) $order_total += $shipping_fees + $wrapping_fees + $assurance_fees;
 if ($order_total < 0 AND $type != Cart::ONLY_DISCOUNTS) return 0;
 if ($type == Cart::ONLY_DISCOUNTS AND isset($order_total_discount))
  return Tools::ps_round((float)($order_total_discount), 2);
 return Tools::ps_round((float)($order_total), 2);

Link to comment
Share on other sites

  • 3 weeks later...

merci

en fait je souhaiterais avoir exactement la même fonction que emballage cadeaux, càd une case à cocher qui ajoute un montant fixe dans le panier. (montant paramétrable dans le back office)

 

exactement comme l'emballage cadeau actuel. il faut donc copier les 2 champs du back office et le champ du front office et faire en sorte que ca ajoute le montant dans le panier.

 

voilà, merci d'avance de vous intérésser à ma demande.

Link to comment
Share on other sites

  • 1 month later...

alors voilà ce que j'ai emplacé ca:

protected function _assignWrappingAndTOS()
{
 // Wrapping fees
 $wrapping_fees = (float)(Configuration::get('PS_GIFT_WRAPPING_PRICE'));
 $wrapping_fees_tax = new Tax((int)(Configuration::get('PS_GIFT_WRAPPING_TAX')));
 $wrapping_fees_tax_inc = $wrapping_fees * (1 + (((float)($wrapping_fees_tax->rate) / 100)));
 // TOS
 $cms = new CMS((int)(Configuration::get('PS_CONDITIONS_CMS_ID')), (int)(self::$cookie->id_lang));
 $this->link_conditions = self::$link->getCMSLink($cms, $cms->link_rewrite, true);
 if (!strpos($this->link_conditions, '?'))
  $this->link_conditions .= '?content_only=1';
 else
  $this->link_conditions .= '&content_only=1';
 self::$smarty->assign(array(
  'checkedTOS' => (int)(self::$cookie->checkedTOS),
  'recyclablePackAllowed' => (int)(Configuration::get('PS_RECYCLABLE_PACK')),
  'giftAllowed' => (int)(Configuration::get('PS_GIFT_WRAPPING')),
  'cms_id' => (int)(Configuration::get('PS_CONDITIONS_CMS_ID')),
  'conditions' => (int)(Configuration::get('PS_CONDITIONS')),
  'link_conditions' => $this->link_conditions,
  'recyclable' => (int)(self::$cart->recyclable),
  'gift_wrapping_price' => (float)(Configuration::get('PS_GIFT_WRAPPING_PRICE')),
  'total_wrapping_cost' => Tools::convertPrice($wrapping_fees_tax_inc, new Currency((int)(self::$cookie->id_currency))),
  'total_wrapping_tax_exc_cost' => Tools::convertPrice($wrapping_fees, new Currency((int)(self::$cookie->id_currency)))));
}

protected function _assignPayment()
{
 self::$smarty->assign(array(
 'HOOK_TOP_PAYMENT' => Module::hookExec('paymentTop'),
  'HOOK_PAYMENT' => Module::hookExecPayment()
 ));
}

 

par ca:

 

protected function _assignWrappingAndTOS()
{
 // Wrapping fees
 $wrapping_fees = (float)(Configuration::get('PS_GIFT_WRAPPING_PRICE'));
 $wrapping_fees_tax = new Tax((int)(Configuration::get('PS_GIFT_WRAPPING_TAX')));
 $wrapping_fees_tax_inc = $wrapping_fees * (1 + (((float)($wrapping_fees_tax->rate) / 100)));
 // TOS
 $cms = new CMS((int)(Configuration::get('PS_CONDITIONS_CMS_ID')), (int)(self::$cookie->id_lang));
 $this->link_conditions = self::$link->getCMSLink($cms, $cms->link_rewrite, true);
 if (!strpos($this->link_conditions, '?'))
  $this->link_conditions .= '?content_only=1';
 else
  $this->link_conditions .= '&content_only=1';
 self::$smarty->assign(array(
  'checkedTOS' => (int)(self::$cookie->checkedTOS),
  'recyclablePackAllowed' => (int)(Configuration::get('PS_RECYCLABLE_PACK')),
  'giftAllowed' => (int)(Configuration::get('PS_GIFT_WRAPPING')),
  'cms_id' => (int)(Configuration::get('PS_CONDITIONS_CMS_ID')),
  'conditions' => (int)(Configuration::get('PS_CONDITIONS')),
  'link_conditions' => $this->link_conditions,
  'recyclable' => (int)(self::$cart->recyclable),
  'gift_wrapping_price' => (float)(Configuration::get('PS_GIFT_WRAPPING_PRICE')),
  'total_wrapping_cost' => Tools::convertPrice($wrapping_fees_tax_inc, new Currency((int)(self::$cookie->id_currency))),
  'total_wrapping_tax_exc_cost' => Tools::convertPrice($wrapping_fees, new Currency((int)(self::$cookie->id_currency)))));
}
protected function _assignASSURANCE()
{
 // assurance fees
 $assurance_fees = (float)(Configuration::get('PS_ASSURANCE_PRICE'));
 $assurance_fees_tax = new Tax((int)(Configuration::get('PS_ASSURANCE_TAX')));
 $assurance_fees_tax_inc = $assurance_fees * (1 + (((float)($assurance_fees_tax->rate) / 100)));
 self::$smarty->assign(array(

  'assurance' => (int)(Configuration::get('PS_ASSURANCE')),
  'assurance_price' => (float)(Configuration::get('PS_ASSURANCE_PRICE')),
  'total_assurance_cost' => Tools::convertPrice($assurance_fees_tax_inc, new Currency((int)(self::$cookie->id_currency))),
  'total_assurance_tax_exc_cost' => Tools::convertPrice($assurance_fees, new Currency((int)(self::$cookie->id_currency)))));
}
protected function _assignPayment()
{
 self::$smarty->assign(array(
 'HOOK_TOP_PAYMENT' => Module::hookExec('paymentTop'),
  'HOOK_PAYMENT' => Module::hookExecPayment()
 ));
}

 

il doit encore manquer qqchose car ca n'a rien changé. la case ne reste pas cochée et rien ne change dans le panier.

Link to comment
Share on other sites

heu là elle n'est pas en % de la commande, c'est juste un montant pour lequel tu appliques un taux de tva.

 

Sinon cette fonction calcule le montant ttc et l'envoie à smarty, ça ne recalcule pas le montant total du panier ni ne laisse la case cochée....

Link to comment
Share on other sites

Dans ParentOrderController, la fonction _processcarrier() assign à l'objet $cart la valeur de gift (0 ou 1)

 

as-tu fait de même pour assurance ?

 

Comme ça dans order-carrier.tpl tu pourras cocher par défaut la checkbox si la variable _assurance est à 1 :

<input type="checkbox" name="assurance" id="assurance" value="1" {if $cart->assurance == 1}checked="checked"{/if} />

 

t'as fait un tour dans le cartcontroller ?

 

t'as déclaré la variable dans la classe cart.php ?

Edited by IchabOd (see edit history)
Link to comment
Share on other sites

alors y a un progrès.

 

j'ai recopié la ligne 203 du fichier parentordercontroller et ca donne ca:

self::$cart->recyclable = (int)(Tools::getValue('recyclable'));
 self::$cart->gift = (int)(Tools::getValue('gift'));
 self::$cart->assurance = (int)(Tools::getValue('assurance'));

 

et là la case assurance reste bien cochée. par contre le panier n'ajoute pas le montant de l'assurance.

il ne reste plus que ca a résoudre.

Link to comment
Share on other sites

  • 3 months later...
  • 1 year later...

Bonjour,

 

Nous avons développé un module permettant d'ajouter une assurance transporteur pour un client. Nous avons 2 ou 3 petites modifications à effectuer pour qu'il soit finalisé (entre autre le choix des transporteur car pour le moment cela s'applique à tous les transporteurs, selon le souhait de notre client à l'origine).

 

N'hésitez pas à nous contacter par MP si le module vous intéresse. Nous pourrions peut être le finaliser rapidement pour vous permettre d'en profiter.

 

Cordialement,

 

illicoPresta

  • Like 1
Link to comment
Share on other sites

  • 10 months later...

Bonjour,

 

Nous avons développé un module permettant d'ajouter une assurance transporteur pour un client. Nous avons 2 ou 3 petites modifications à effectuer pour qu'il soit finalisé (entre autre le choix des transporteur car pour le moment cela s'applique à tous les transporteurs, selon le souhait de notre client à l'origine).

 

N'hésitez pas à nous contacter par MP si le module vous intéresse. Nous pourrions peut être le finaliser rapidement pour vous permettre d'en profiter.

 

Cordialement,

 

illicoPresta

 

Bonjour, pourriez-vous m'envoyer le lien de votre module ?

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...