osCommerce France : Accueil Forum Portail osCommerce France Réponses aux questions Foire aux contributions

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> [Résolu] Paiement 3 fois par cheque avec montant mini
bes_lau
posté 10 Apr 2008, 14:22
Message #1


Ceinture orange+ OSC
Icône de groupe

Groupe : Membres
Messages : 305
Inscrit : 7-February 04
Lieu : STE MAXIME (83)
Membre no 1951



Bonjour,

afin de favoriser les ventes sur un site, je cherche le moyen de modifier le module de paiement moneyorder.php pour proposer a mes clients un réglement en 3 fois sans frais par chèque à partir d'un montant minimum de commande (par ex : 600 €) et bien sur afficher au client le montant des 3 chèques à établir.

Si quelqu'un à déja la solution merci d'avance, sinon je vais tenter d'essayer de develloper ce module.

Ce message a été modifié par bes_lau - 10 Apr 2008, 18:20.


--------------------
Creload 6.2 B2B + urlrewriting + Kelkoo + Visitors + quick update + Atos + Visibles Countries 1.2 + Tag Clouds + Product Quantity Drop Down Box in Product Info V1.1 + Auto Remove Button in Shopping Cart + Recover Shopping Cart 2.2 + Crawltrack

Tests en cours sur : MS2-RC1-W3C

Ps : Mettez [Résolu] dans l'entete de votre post quand c'est le cas, merci pour la communauté et pour ceux qui cherchent une réponse à un problème déja traité. (Encore faut-il utiliser la fonction de recherche sur le forum) donc c'est ici : http://www.oscommerce-fr.info/forum/index.php?act=Search
Faq : http://www.oscommerce-fr.info/faq/
Contributions Fr : http://contributions.oscommerce-fr.info/
Contributions Us : http://addons.oscommerce.com/
Go to the top of the page
 
bes_lau
posté 10 Apr 2008, 18:19
Message #2


Ceinture orange+ OSC
Icône de groupe

Groupe : Membres
Messages : 305
Inscrit : 7-February 04
Lieu : STE MAXIME (83)
Membre no 1951



Bon voila c'est fait :

dans \catalog\includes\modules\payment
créer un fichier nommé : moneyorder3x.php

contenu :

Code
<?php
/*
  $Id: moneyorder3x.php,v 1.1.1.1 2004/03/04 23:41:19 ccwjr Exp $

  By bes_lau 2008/04/10
  
  osCommerce, Open Source E-Commerce Solutions
  [url="http://www.oscommerce.com"]http://www.oscommerce.com[/url]

  Copyright (c) 2003 osCommerce

  Released under the GNU General Public License
*/

  class moneyorder3x {
    var $code, $title, $description, $enabled;

// class constructor
    function moneyorder3x() {
      global $order;


      $this->code = 'moneyorder3x';
      $this->title = MODULE_PAYMENT_MONEYORDER3X_TEXT_TITLE;
      $this->description = MODULE_PAYMENT_MONEYORDER3X_TEXT_DESCRIPTION;
      $this->sort_order = MODULE_PAYMENT_MONEYORDER3X_SORT_ORDER;
      if(MODULE_PAYMENT_MONEYORDER3X_STATUS == 'True'){
            if($_SESSION['cart']->total>300){
                $this->enabled = true;
            } else {
                $this->enabled = false;
            }
      } else {
            $this->enabled = false;
      }
      if ((int)MODULE_PAYMENT_MONEYORDER3X_ORDER_STATUS_ID > 0) {
        $this->order_status = MODULE_PAYMENT_MONEYORDER3X_ORDER_STATUS_ID;
      }

      if (is_object($order)) $this->update_status();
    
      $this->email_footer = MODULE_PAYMENT_MONEYORDER3X_TEXT_EMAIL_FOOTER;
    }

// class methods
    function update_status() {
      global $order;

      if ( ($this->enabled == true) && ((int)MODULE_PAYMENT_MONEYORDER3X_ZONE > 0) ) {
        $check_flag = false;
        $check_query = tep_db_query("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_PAYMENT_MONEYORDER3X_ZONE . "' and zone_country_id = '" . $order->billing['country']['id'] . "' order by zone_id");
        while ($check = tep_db_fetch_array($check_query)) {
          if ($check['zone_id'] < 1) {
            $check_flag = true;
            break;
          } elseif ($check['zone_id'] == $order->billing['zone_id']) {
            $check_flag = true;
            break;
          }
        }

        if ($check_flag == false) {
          $this->enabled = false;
        }
      }
    }

    function javascript_validation() {
      return false;
    }

    function selection() {
      return array('id' => $this->code,
                   'module' => $this->title);
    }

    function pre_confirmation_check() {
      return false;
    }

    function confirmation() {
    global $order;
    $amount1 = ($order->info['total'] / 3) + $order->info['shipping_cost'];
    $amount2 = $order->info['total'] / 3;
    $amount3 = ($order->info['total'] - ($amount1 + $amount2));
    $text = sprintf(MODULE_PAYMENT_MONEYORDER3X_TEXT, $amount1, $amount2, $amount3);
    return array('title' => $text . MODULE_PAYMENT_MONEYORDER3X_TEXT_DESCRIPTION);
    }
//   function confirmation() {
//      return array('title' => MODULE_PAYMENT_MONEYORDER3X_TEXT_DESCRIPTION);
//    }

    function process_button() {
      return false;
    }

    function before_process() {
      return false;
    }

    function after_process() {
      return false;
    }

    function get_error() {
      return false;
    }

    function check() {
      if (!isset($this->_check)) {
        $check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_MONEYORDER3X_STATUS'");
        $this->_check = tep_db_num_rows($check_query);
      }
      return $this->_check;
    }

    function install() {
      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Enable Check/Money Order Module', 'MODULE_PAYMENT_MONEYORDER3X_STATUS', 'True', 'Do you want to accept Check/Money Order payments?', '6', '1', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now());");
      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Money Order  Make Payable to:', 'MODULE_PAYMENT_MONEYORDER3X_PAYTO', 'Make Payable to:', 'Who should payments be made payable to?', '6', '1', now());");
      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Money Order  Sort order of display.', 'MODULE_PAYMENT_MONEYORDER3X_SORT_ORDER', '0', 'Sort order of display. Lowest is displayed first.', '6', '0', now())");
      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Money Order  Payment Zone', 'MODULE_PAYMENT_MONEYORDER3X_ZONE', '0', 'If a zone is selected, only enable this payment method for that zone.', '6', '2', 'tep_get_zone_class_title', 'tep_cfg_pull_down_zone_classes(', now())");
      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, use_function, date_added) values ('Money Order  Set Order Status', 'MODULE_PAYMENT_MONEYORDER3X_ORDER_STATUS_ID', '0', 'Set the status of orders made with this payment module to this value', '6', '0', 'tep_cfg_pull_down_order_statuses(', 'tep_get_order_status_name', now())");
    }

    function remove() {
      tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
    }

    function keys() {
      return array('MODULE_PAYMENT_MONEYORDER3X_STATUS', 'MODULE_PAYMENT_MONEYORDER3X_ZONE', 'MODULE_PAYMENT_MONEYORDER3X_ORDER_STATUS_ID', 'MODULE_PAYMENT_MONEYORDER3X_SORT_ORDER', 'MODULE_PAYMENT_MONEYORDER3X_PAYTO');
    }
  }
?>


dans \catalog\includes\languages\french\modules\payment (Faire de meme pour toutes vos langues)
créer un fichier nommé : moneyorder3x.php

contenu :

Code
<?php
/*
  $Id: moneyorder3x.php,v 1.2 2004/03/05 00:36:42 ccwjr Exp $

  By Bes_lau 2008/04/10

  osCommerce, Open Source E-Commerce Solutions
  http://www.oscommerce.com

  Copyright (c) 2002 osCommerce

  Released under the GNU General Public License
*/

  define('MODULE_PAYMENT_MONEYORDER3X_TEXT_TITLE', '3 Fois sans frais par chèque');
  define('MODULE_PAYMENT_MONEYORDER3X_TEXT_DESCRIPTION', '<br>Etablir les chèque à l\'ordre de : <br>' . MODULE_PAYMENT_MONEYORDER3X_PAYTO . '<br><br>Envoyer à :<br>' . nl2br(STORE_NAME_ADDRESS) . '<br><br>' . 'Votre commande ne sera envoyée qu\'à réception du règlement et de sa validation par notre banque.');
  define('MODULE_PAYMENT_MONEYORDER3X_TEXT_EMAIL_FOOTER', '<br>Etablir les chèques à l\'ordre de : <br>'. MODULE_PAYMENT_MONEYORDER3X_PAYTO . '<br><br>Envoyer à:<br>' . STORE_NAME_ADDRESS . '' . '<br><br>Votre commande ne sera envoyée qu\'à réception du règlement et de sa validation par notre banque.');
?>


Ce module n'est actif qu'a partir de 300 € de commande, a vous de modifier la ligne N°27 pour le changer.

@+

Edit : Correction bug activation selon montant.



Ce message a été modifié par bes_lau - 3 Jun 2008, 01:35.


--------------------
Creload 6.2 B2B + urlrewriting + Kelkoo + Visitors + quick update + Atos + Visibles Countries 1.2 + Tag Clouds + Product Quantity Drop Down Box in Product Info V1.1 + Auto Remove Button in Shopping Cart + Recover Shopping Cart 2.2 + Crawltrack

Tests en cours sur : MS2-RC1-W3C

Ps : Mettez [Résolu] dans l'entete de votre post quand c'est le cas, merci pour la communauté et pour ceux qui cherchent une réponse à un problème déja traité. (Encore faut-il utiliser la fonction de recherche sur le forum) donc c'est ici : http://www.oscommerce-fr.info/forum/index.php?act=Search
Faq : http://www.oscommerce-fr.info/faq/
Contributions Fr : http://contributions.oscommerce-fr.info/
Contributions Us : http://addons.oscommerce.com/
Go to the top of the page
 
delete
posté 15 Apr 2008, 10:59
Message #3


2eme dan OSC
Icône de groupe

Groupe : Bannis
Messages : 3022
Inscrit : 12-November 07
Lieu : Massilia
Membre no 19718



Oui mais ca ne calcule pas le montant des chèque à faire ...

Moi j'avais fait ca :

function confirmation() {
global $order ;

$amount1 = ($order->info['total'] / 3) + $order->info['shipping_cost'] ;
$amount2 = $order->info['total'] / 3 ;
$amount3 = ($order->info['total'] / 3) - $order->info['shipping_cost'] ;

$text = sprintf(MODULE_PAYMENT_MONEYORDER_TEXT_P3F, $amount1, $amount2, $amount3) ;
return array('title' => $text . MODULE_PAYMENT_MONEYORDER_TEXT_DESCRIPTION);
}
// le define dans le fichier langue :
define(MODULE_PAYMENT_MONEYORDER_TEXT_P3F, 'Envoyez un chèque de %.02f, puis de %.02f et enfin de %.02f<p></p>') ;

Ca fait raquer au mec les frais de port initialement, et ensuite les paiement sont dégressifs ... wink.gif

Ce message a été modifié par delete - 15 Apr 2008, 10:59.
Go to the top of the page
 
bes_lau
posté 15 Apr 2008, 11:40
Message #4


Ceinture orange+ OSC
Icône de groupe

Groupe : Membres
Messages : 305
Inscrit : 7-February 04
Lieu : STE MAXIME (83)
Membre no 1951



C'est pas mal comme fonction mais toujours un probleme d'arrondi.

un client commande pour 32.90 € at les monants sont les suivants :

17.53 €, 10.63 €, 3.73 € soit 32.89 € pour la compta c'est pas terrible.

dès que j'ai un peu de temps je regarde ca de plus près, encore merci pour l'évolution du module.

EDIT

ja vais essayer truc comme ca :

CODE
    function confirmation() {
    global $order;
    $amount1 = ($order->info['total'] / 3) + $order->info['shipping_cost'];
    $amount2 = $order->info['total'] / 3;
    $amount3 = ($order->info['total'] - ($amount1 + $amount2));
    $text = sprintf(MODULE_PAYMENT_MONEYORDER3X_TEXT, $amount1, $amount2, $amount3);
    return array('title' => $text . MODULE_PAYMENT_MONEYORDER3X_TEXT_DESCRIPTION);
    }


Ce message a été modifié par bes_lau - 15 Apr 2008, 12:05.


--------------------
Creload 6.2 B2B + urlrewriting + Kelkoo + Visitors + quick update + Atos + Visibles Countries 1.2 + Tag Clouds + Product Quantity Drop Down Box in Product Info V1.1 + Auto Remove Button in Shopping Cart + Recover Shopping Cart 2.2 + Crawltrack

Tests en cours sur : MS2-RC1-W3C

Ps : Mettez [Résolu] dans l'entete de votre post quand c'est le cas, merci pour la communauté et pour ceux qui cherchent une réponse à un problème déja traité. (Encore faut-il utiliser la fonction de recherche sur le forum) donc c'est ici : http://www.oscommerce-fr.info/forum/index.php?act=Search
Faq : http://www.oscommerce-fr.info/faq/
Contributions Fr : http://contributions.oscommerce-fr.info/
Contributions Us : http://addons.oscommerce.com/
Go to the top of the page
 
delete
posté 15 Apr 2008, 14:48
Message #5


2eme dan OSC
Icône de groupe

Groupe : Bannis
Messages : 3022
Inscrit : 12-November 07
Lieu : Massilia
Membre no 19718



Oui après chacun sa soupe, je n'avais pas terminé ce dev car plus de besoin,

je l'ai mis pour éclairer ta lanterne !

de même que il serait intéressant d'intégrer la classe currencies pour afficher comme il faut en euro ou dans la devise choisie ... wink.gif
Go to the top of the page
 
schnapouille
posté 7 May 2008, 15:26
Message #6


Ceinture verte OSC
Icône de groupe

Groupe : Membres
Messages : 660
Inscrit : 21-October 05
Membre no 7560



slt

moi j'ai installé ca et ca marche impec :

ici


--------------------
VIVE LES TECKELS A POILS DUR !!
Go to the top of the page
 
audioshop
posté 4 Jun 2009, 21:06
Message #7


Ceinture bleue OSC
Icône de groupe

Groupe : Membres
Messages : 983
Inscrit : 8-April 08
Lieu : strasbourg
Membre no 21429



Citation (schnapouille @ 7 May 2008, 16:26) *
slt

moi j'ai installé ca et ca marche impec :

ici



encore une fois schnapouille perfect, que de bon conseil.
Go to the top of the page
 
concorde44
posté 25 Jan 2010, 16:25
Message #8


Ceinture orange+ OSC
Icône de groupe

Groupe : Membres
Messages : 382
Inscrit : 31-December 03
Lieu : Nantes
Membre no 1780



Merci les gars ! Ca marche pour moi, mais j'ai amélioré la méthode de calcul du montant des 3 chèques, vu sur des forums php.
Je vous donne le code ça peut servir.
plutot que d'avoir un montant total de 410,65 par exemple avec 3 cheques de 136.88 et en plus le final tombe pas juste...

je préfere arrondir à la dizaine supérieure pour les 2 premiers (+ simple) et le deriner aura les centimes.
Ce qui donne : 140 - 140 - 130.65

Calcul par ce code :
Code
function confirmation() {
global $order;
$amount1 = ceil(($order->info['total'] / 3)/10)*10;
$amount2 = ceil(($order->info['total'] / 3)/10)*10;
$amount3 = ($order->info['total'] - ($amount1 + $amount2));
$text = sprintf(MODULE_PAYMENT_MONEYORDER3X_TEXT, $amount1, $amount2, $amount3);
return array('title' => $text . MODULE_PAYMENT_MONEYORDER3X_TEXT_DESCRIPTION);
}


Seb


--------------------
Osc 2.2 ms2 en prod : STS - Easy Populate - CSS Buttons - SEO - Email Invoice -MailingList 2.0 - Order editor - Wordlpay ...
Go to the top of the page
 
maxime63
posté 22 Jun 2011, 10:52
Message #9


Ceinture jaune OSC
Icône de groupe

Groupe : Membres
Messages : 47
Inscrit : 4-June 09
Membre no 25510



Bonjour,

super contrib.
j'ai toutefois une question : comment insérer le montant des 3 chèques à établir dans le mail que le client reçoit?
est-ce possible déjà?
merci d'avance


--------------------
oscommerce 2.2, fckeditor2.2.1, ultimate seo url, headerTags 2.6.3, product listings column, product cross, sitemap, tva intracom, visible countries, mindsparx specials, starproduct pimped, order editor 5.0.6.3, manual order maker 1.5.6, ot discount coupon codes 3.34, ......
Go to the top of the page
 
mickaelguilbertx...
posté 20 Jun 2012, 13:16
Message #10


Ceinture blanche+ OSC
Icône de groupe

Groupe : Membres
Messages : 27
Inscrit : 11-August 11
Membre no 30122



Citation (maxime63 @ 22 Jun 2011, 10:52) *
Bonjour,

super contrib.
j'ai toutefois une question : comment insérer le montant des 3 chèques à établir dans le mail que le client reçoit?
est-ce possible déjà?
merci d'avance


tu mets ca dans checkout_process avant l'envoi de mail
Code
//moneyorder3x
if ($payment_class->code =='moneyorder3x'){
        $amount1 = ceil(($order->info['total'] / 3)/10)*10;
        $amount2 = ceil(($order->info['total'] / 3)/10)*10;
        $amount3 = ($order->info['total'] - ($amount1 + $amount2));
        $text = sprintf('Envoyez 3 chèques de %.02f,  %.02f et %.02f', $amount1, $amount2, $amount3);
        $email_order .=  "\n\n" . $text . "\n\n";
}
  
  tep_mail($order->customer['firstname'] . ' ' . $order->customer['lastname'], $order->customer['email_address'], EMAIL_TEXT_SUBJECT, $email_order, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);

Go to the top of the page
 

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



RSS Version bas débit Nous sommes le : 28th March 2024 - 15:07
Ce site est déclaré auprès de la commision Nationale
de l'Informatique et des Libertés (déclaration n°: 1043896)