Besoin de la bonne marche à suivre svp

  • Posts: 46
  • Thank you received: 2
7 years 8 months ago #265393

-- HikaShop version -- : 3.0.1
-- Joomla version -- : 3.6.5
-- PHP version -- : 7.0.10
-- Browser(s) name and version -- : All

Bonjour,

Mon texte est un peu long mais je ne sais pas comment résumer plus.

J'ai plusieurs clients (4 actuellement) qui me demandent des sites marchands et je suis un adepte convaincu de joomla, yootheme et hikashop, et je n'en démordrais pas. Ceci dit j'ai besoin de direction pour bien commencer et de votre confirmation qu'avec un peu de travail je pourrais répondre aux besoins en utilisant hikashop ou pas.

Concrètement, hikashop n'a pas encore sorti de version "booking" qui permet de gérer un calendrier de réservation et des dates. Je l’attends avec impatience pour les besoins d'une agence de voyage virtuelle ou de sites de location de voiture ou matériel. Exemple un produit = une activité le lundi de 8h à 10h, et le client peut entrer ses dates d’arrivée et de départ et tous les produits sur cette période de temps s’affichent. De même pour les activités de locations, basées sur un nombre de jours de location.

Sur les forums j’ai vu qu’avec un peu de customisation, notamment la création de plugin hikashop avec des champs personnalisés il y avait des possibilités de contourner pas mal de chose et des trouver des solutions. J’ai donc décidé d’apprendre à faire des customisations hikashop. J’ai pris l’exemple de custom_quantity_width_length et j’ai compris comment cela fonctionne.

Concrètement : Est-ce que vous pourriez me guider pour arriver sur un cas concret, ou je bute depuis 5 jours et je ne suis pas sûr de bien partir et d’avoir les bonnes étapes à suivre ?

Je suis un développeur autodidacte et j'apprend le code sur le tas, je ne suis pas expert mais je me débrouille on va dire si je sais ou aller. En échanges vous gagnerez déjà 4 licences hikashop business (ce n’est pas grand-chose pour vous mais c’est un début).

Il s’agit d’un site de location de voiture. Heureusement il est très simplifié : il n’y a pas de gestion de disponibilité par calendrier.

Le client choisi sa voiture et sa franchise dans le produit, il voit le prix dans le caddie et confirme sa réservation (sans payer). Impossible de confirmer la disponibilité en ligne et donc pas de payement en ligne pour le moment. La disponibilité sera confirmée par email plus tard avec un lien de payement par email, c’est tout.

J’ai essayé à tâtons mais à cause de contraintes, je n’ai pas trouvé la bonne configuration.

Ces contraintes sont :
1- le dimanche c’est fermé (il faut proposer le samedi quand le dimanche est choisi).
2- les prix définit par mon client sont un cauchemar et sont individuels (pas de formule mathématique propre qui multiplie un prix de base par nombre de jour de location).
3- On peut louer de 1 à 30 jours.
4- chaque voiture doit être associé à 2 ou 3 possibilités de franchise d’assurance restant à payer en cas de sinistre qui sont des % du prix de la location de la voiture TTC (0% possible si plus de 7 jours de location, ou 16% du prix TTC, ou 25% du prix TTC).
5- Des réduction peuvent être appliquée mais uniquement sur le prix de location (hors franchise).
Je l’ai tourné dans tous les sens et je n’y arrive pas.

J’ai créé un produit avec 30 prix différents (1 par jour) mais l’affichage du produit fini avec trop de ligne de texte et je n’arrive pas à mettre les franchises et la réduction est sur tout et pas que sur le prix de la location. Je passe alors au variant.

J’ai créé 30 variants d’un produit voiture (1 par durée de location : 1 jour, 2 jours … 30 jours). Chaque variant à 2 caractéristiques : Durée de 1 à 30, et franchise (1, 2 ou 3). Si je fais cela alors le discount de 10% s’applique avec la franchise et pas seulement sur le prix de location.

J’ai recommencé pareil mais avec 1 caractéristique durée, et les franchise 1, 2 ou 3 en option. Si je fais cela la franchise ne peut pas être calculée étant 16% du prix de la location. (la franchise étant dans une autre catégorie et ne peut pas être lié au produit et à son prix).

Bref je bute.

VOILA IDEALEMENT CE QUE J’AIMERAIS FAIRE :

Le produit d’une voiture s’affiche avec 2 dates début (pas dimanche) et fin. Le client entre ces 2 dates et cela calcule le nombre de jour de location et le prix. Le client choisi parmi 2 franchises (si moins de 7 jours de location) ou 3 franchises dans un menu déroulant et voit le prix qui est un % du prix de location. Le client voit le prix total. Il sélectionne et cela part dans le caddie. Pour tout discount, le calcul doit se faire uniquement sur le prix TTC de la voiture hors franchise.

Le caddie affiche le produit et son prix, le prix de la franchise choisie, la réduction de 10% uniquement sur le montant de la location hors franchise, et le montant total. Le client valide.
Comment je dois faire ?
Produit, variant?
Champs personnalisés date dans la table item ou order ?
Champs personnalisés franchises ? ou caractéristiques ou options ?
Je force la quantité avec la différence entre les date de début ou fin ?

Je sais pertinemment que hikashop ne fait pas de développement, mais si j’arrive à faire cela je pourrais me débrouiller pour tous les autres sites qu’on me demande. Je serais très reconnaissant si vous pouvez me guider.

Cordialement
Yannick

Please Log in or Create an account to join the conversation.

  • Posts: 82868
  • Thank you received: 13377
  • MODERATOR
7 years 8 months ago #265420

Bonjour,

HikaShop n'a pas de système pour calculer le nombre de jours entre deux attributs, que ce soit des caractéristiques, des options ou des champs personnalisés.
Et pareil avec les calculs du "prix en fonction de".
Donc cela va forcément passer par du code.
Je pense que votre idée de partir sur des champs personnalisés de la table "item", avec un plugin d'override de prix est la bonne direction.
Cela va vous permettre de calculer ce que vous voulez, avec les formules que vous voulez.
Le plugin custom_quantity_width_length est en effet un bon point de départ mais il ne faut pas forcément ce limiter à cela.

Pour mémoire, le code du plugin est:

<?php
jimport('joomla.plugin.plugin');
class plgSystemCustom_quantity_width_length extends JPlugin{
}

if(!function_exists('hikashop_product_price_for_quantity_in_cart') && !function_exists('hikashop_product_price_for_quantity_in_order')) {
	function hikashop_product_price_for_quantity_in_cart(&$product){
		$currencyClass = hikashop_get('class.currency');
		$quantity = @$product->cart_product_quantity;
		if(!empty($product->length) && !empty($product->width)){
			$quantity = $quantity*$product->length*$product->width;
		}
		$currencyClass->quantityPrices($product->prices,$quantity,$product->cart_product_total_quantity);
	}

	function hikashop_product_price_for_quantity_in_order(&$product){
		$quantity = $product->order_product_quantity;
		if(!empty($product->length) && !empty($product->width)){
			$quantity = $quantity*$product->length*$product->width;
		}
		$product->order_product_total_price_no_vat = $product->order_product_price*$quantity;
		$product->order_product_total_price = ($product->order_product_price+$product->order_product_tax)*$quantity;
	}
}
Dans ce code, ce sont les lignes
if(!empty($product->length) && !empty($product->width)){
			$quantity = $quantity*$product->length*$product->width;
		}
qui changent la quantité du produit.
Cependant, un autre plugin intéressant est le plugin "donation":
demo.hikashop.com/index.php/en/hikashop/...t-page/donation-page
Vous trouverez son code dans plugins/system/custom_price/
Plutot que de changer la quantité, ce plugin modifie le prix du produit en ce basant sur un champs personnalisé. Donc vous pouvez vous baser là dessus pour votre plugin, je pense que ce sera plus adapté.

Please Log in or Create an account to join the conversation.

  • Posts: 46
  • Thank you received: 2
7 years 8 months ago #265557

Merci.
Ok je suis parti sur le plugin donation.
J'ai créé 2 champs personalisés (voir photo1.png et photo2.png)



Label : Start Rental
Table : item
Column name : startloc
Field type : simple date picker

Label : Insurance deduction (franchise)
Table : item
Column name : franchisec
Field type : single dropdown
Value : 100
Title : None (min 7 days) <-- 0% du prix du produit
Value : 116
Title : at 30'000 XPF <-- 16% du prix du produit
Value : 125
Title : at 60'000 XPF <-- 25% du prix du produit

Ensuite j'ai modifié le plugin custom price.php pour que le nouveau prix englobe le prix du produit + le % du prix du produit pour la franchise.
$product->prices[$k]->price_value = $this->currencyClass->getUntaxedPrice(hikashop_toFloat($product->$column * $product->prices[$k]->price_value / 100),hikashop_getZone(),$product->product_tax_id);
Le prix HT c'est ok : avec la franchise 116, j'ai bien le prix HT + 16% du prix HT

PAR CONTRE TOUS LES AUTRES MONTANTS SONT FAUX : Prix TTC, Sous Total, TVA, Total
(voir photo3.png et photo4.png et photo5.png)
Comment est calculée la taxe? et le sous total?


dans le plugin custom price.php j'ai mis :
$product->prices[$k]->price_value_with_tax = $this->currencyClass->getTaxedPrice(hikashop_toFloat($product->$column * $product->prices[$k]->price_value / 100),hikashop_getZone(),$product->product_tax_id);
Comment corriger? c'est le getTaxedPrice qui ne va pas?

Question : a quoi correspond le switch($taxes) ... case 2, case 1, case 0 default dans le plugin custom price.php?
C'est par rapport au option de configuration d'affichage et de calcul de la taxe?

Et si j'applique une réduction, le discount, s'applique au prix + franchise, et je voudrais pouvoir faire des discount que sur le prix du produit sans franchise
on peut faire cela?

Derniere question : est ce qu'en bidouillant datepickerfield_class.php je peux exclure les dimanche (pour qu'on ne puisse pas sélectionner un dimanche)?
<td class="key">'.JText::_('DATE_PICKER_OPT_FORBIDDEN_DAYS').'</td>
<td><label><input type="checkbox" name="field_options[datepicker_options][forbidden_0]" value="1"'.(empty($value)?'':' checked="checked"').'/> '.JText::_('SUNDAY').'</label></td>

Merci beaucoup
Cordialement
Yannick

Please Log in or Create an account to join the conversation.

  • Posts: 46
  • Thank you received: 2
7 years 8 months ago #265584

J'ai oublié de dire j'ai une TVA à 13% ici

Please Log in or Create an account to join the conversation.

  • Posts: 82868
  • Thank you received: 13377
  • MODERATOR
7 years 8 months ago #265569

Bonjour,

Le sous total et la taxe sont calculés à partir des montants que vous mettez dans $product->prices[$k]->price_value_with_tax et $product->prices[$k]->price_value ainsi que $product->prices[$k]->taxes
Donc déjà, si le prix unitaire est faux, c'est que votre calcul du prix du produit est faux, ou alors les taxes n'ont pas été mises à jour, etc.

C'est vous qui êtes maître du prix du produit avec ce trigger, donc vous pouvez calculer les réductions que vous voulez.

Et pour exclure le dimanche, pas besoin de changer le plugin. Il suffit de configurer un champs de type "advanced date picker" avec l'option "jours interdits".

Please Log in or Create an account to join the conversation.

Time to create page: 0.101 seconds
Powered by Kunena Forum