Frais sur petites commandes en backoffice

6 messages dans ce sujet

Posté(e) · Signaler ce message

Bonjour

serait il possible, dans les futures versions, d'avoir dans le backoffice, dans la création ou l'édition des commandes, la case "frais sur petite commande" qui se remplisse automatiquement lorsque l'on efface son contenu un peu comme celà se passe pour les frais de livraison (et en fonction des paramètres du site) ?

merci

JL

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

Dans administrer\modeles\commande_details.php, vous pouvez ajouter


if (!empty($commande['small_order_overcost_amount'])) {
$small_order_overcost_amount = $commande['small_order_overcost_amount'];
} elseif($commande['total_produit'] < $GLOBALS['site_parameters']['small_order_overcost_limit'] && $commande['total_produit'] >= $GLOBALS['site_parameters']['minimal_amout_to_order']) {) {
$small_order_overcost_amount = $GLOBALS['site_parameters']['small_order_overcost_amount'];
} else {
$small_order_overcost_amount = 0;
}
[/CODE]

ligne 299, ensuite remplacer $commande['small_order_overcost_amount'] par $small_order_overcost_amount dans le champ input [i]text[/i] associé :

<td><input type="text" name="small_order_overcost_amount" value="' . String::str_form_value(fprix(vn([b]$commande['small_order_overcost_amount'])[/b], false, vb($commande['devise']), true, vn($commande['currency_rate']), false)) . '" /> ' . vb($commande['devise']) . ' TTC dont TVA <input type=text" name="tva_small_order_overcost" value="' . String::str_form_value(fprix(vn($commande['tva_small_order_overcost]), false, vb($commande['devise']), true, vn($commande['currency_rate']), false)) . '" /> ' . vb($commande['devise']) . '</td>

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjou Simon

Modification effectuée, mais rien ne change. Ce que je constate :

Lorsque je créé une petite commande en backoffice (<10euros) : la case "Frais sur petite commande" reste à 0 (normalement, en dessous de 10euros, il devrait s'ajoutter 3euros de frais).

ET dans le BDC ou la facture : pas de frais supplémentaires indiqués en bas de page.

Maintenant, si je sélectionne règlement paypal avec le même montant de petite facture (donc 5% de frais paypal), la case "frais sur petite commande" reste toujours à 0.

Par contre, sur le BDC ou la Facture, j'ai bien les frais de gestion inhérents à Paypal qui s'affichent, mais toujours pas de frais sur petite commande...

Bizarre... Vous avez une solution ?

Merci

JL

UP ! tiens d'ailleurs, j'ai une erreur qui apparaît maintenant en backoffice quand je lance la création d'une nouvelle commande, à cause des lignes de code que vous m'avez communiquées :

message : Notice: Undefined index: total_produit in /homepages/5/d334204221/htdocs/administrer/modeles/commande_details.php on line 301

et ma ligne 301 c'est celle là :

if (!empty($commande['small_order_overcost_amount'])) {

$small_order_overcost_amount = $commande['small_order_overcost_amount'];

} elseif($commande['total_produit'] < $GLOBALS['site_parameters']['small_order_overcost_limit'] && $commande['total_produit'] >= $GLOBALS['site_parameters']['minimal_amout_to_order']) {

$small_order_overcost_amount = $GLOBALS['site_parameters']['small_order_overcost_amount'];

} else {

$small_order_overcost_amount = 0;

}

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

Dans un premier temps, petite rectification dans le calcul de la variable small_order_overcost_amount


if ($commande['small_order_overcost_amount']>0) {
$small_order_overcost_amount = $commande['small_order_overcost_amount'];
} elseif($commande['total_produit'] < $GLOBALS['site_parameters']['small_order_overcost_limit'] && $commande['total_produit'] >= $GLOBALS['site_parameters']['minimal_amout_to_order']) {
$small_order_overcost_amount = $GLOBALS['site_parameters']['small_order_overcost_amount'];
} else {
$small_order_overcost_amount = 0;
}
[/CODE] Ensuite, l'index total_produit doit être défini à cet endroit du code. Le tableau commande contient l'ensemble des champs de la table peel_commandes. C'est la fonction affiche_details_commande du fichier lib/fonctions/fonctions_admin.php qui récupère ces informations :
[CODE]
function affiche_details_commande($id, $action, $user_id = 0)
{
if(!empty($id)){
$qid_commande = query("SELECT *
FROM peel_commandes
WHERE id_ecom = '" . intval($GLOBALS['site_parameters']['id']) . "' AND id = '" . intval($id) . "'");
$commande = fetch_assoc($qid_commande);
}
if (!empty($commande) || $action == 'insere' || $action == 'ajout') {
// Si nous somme en mode modif, alors on cherche les details de la commande
if ($action != 'insere' && $action != 'ajout') {
$date_facture = preg_replace('/^([0-9]{2,4})-([0-9]{1,2})-([0-9]{1,2})$/', '$3/$2/$1', $commande['a_timestamp']);
if (display_prices_with_taxes_in_admin ()) {
$montant_displayed = $commande['montant'];
} else {
$montant_displayed = $commande['montant_ht'];
}
} else {
$date_facture = preg_replace('/^([0-9]{2,4})-([0-9]{1,2})-([0-9]{1,2})$/', '$3/$2/$1', date('Y-m-d'));
$montant_displayed = 0;
}
// Affiche le modeles d'une commande en detail
include("modeles/commande_details.php");
} elseif (!empty($id)) {
echo '<p class="global_error">Commande N&#176;' . $id . ' non trouv&#233;e</p>';
}
}

=> Pouvez vous vérifier que ce morceau de code est présent?

Enfin, il y a un bien un problème dans le calcul des surcouts sur les frais de paiement. Dans la fonction save_commande_in_database() du fichier lib/fonctions/fonctions_admin.php, il faut modifier la ligne 1475 par

$montant = vn($total_produit) - vn($avoir) + vn($cout_transport) + vn($frm['tarif_paiement']) + vn($small_order_overcost_amount);

et supprimer la ligne 1482

$frm['tarif_paiement'] = $tarif_paiement;

En fait, le surcout est calculé par la fonction set_paiement juste au dessus. La valeur calculée dans cette fonction était récrite par la ligne 1482.

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour Simon

J'ai appliqué votre première correction dans le calcul de la variable small_order_overcost_amount

pour le moment, rien qu'avec cette modification, ça marche !! il y a maintenant les "frais sur petites commandes" qui s'appliquent automatiquement dans le backoffice. MAIS... la ligne de frais de préparation ne s'affiche plus sur le Bon de commande !!!

En plus, si je veux maintenant mettre manuellement à 0 ces frais de petites commandes pour en faire cadeau au client, chaque fois que je sauvegarde la commande, ces frais reviennent systématiquement à 3euros !!!

Mais ces modifications amènent maintenant une autre erreur. Lorsque je créé une commande à partir d'un utilisateur, à l'ouverture de la page commander.php, j'ai lemessage suivant :

Notice: Undefined index: small_order_overcost_amount in /homepages/5/d334204221/htdocs/administrer/modeles/commande_details.php on line 299

Notice: Undefined index: small_order_overcost_amount in /homepages/5/d334204221/htdocs/administrer/modeles/commande_details.php on line 300

avec les lignes 299 et 300 de votre correction de commande_details.php qui sont :

if ($commande['small_order_overcost_amount'] == '') {

$small_order_overcost_amount = $commande['small_order_overcost_amount'];

Si ça peut aider...

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

Ci dessous le code corrigé pour permettre la mise à jour automatique de frais sur les petites commandes. Le fonctionnement est :

Si la valeur du champ est à 0, les frais supplémentaires restent à 0.

Si la valeur du champ est supérieur à 0, les frais supplémentaires seront inchangé

Si la valeur du champ est vide, les frais supplémentaires seront ceux défini dans la page de paramètre généraux.

Il faut pour cela ajouter le code

    if ($frm['small_order_overcost_amount'] == '') {
if($total_produit < $GLOBALS['site_parameters']['small_order_overcost_limit'] && $total_produit >= $GLOBALS['site_parameters']['minimal_amout_to_order']) {
$small_order_overcost_amount = $GLOBALS['site_parameters']['small_order_overcost_amount'];
} else {
$small_order_overcost_amount = 0;
}
} else {
$small_order_overcost_amount = get_float_from_user_input($frm['small_order_overcost_amount'], $frm['currency_rate']);
}
$tva_small_order_overcost = get_float_from_user_input($small_order_overcost_amount, $frm['currency_rate']);[/CODE]

dans la fonction save_commande_in_database, ligne 1471 du fichier fonctions/fonctions_admin.php.

Cette modification annule et remplace les indications fournies dans mes messages précédents.

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !


Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.


Connectez-vous maintenant

Twitter Advisto ecommerce

Facebook PEEL Shopping