Le Sultan Posted December 26, 2014 Share Posted December 26, 2014 Bonjour je ny comprends pas grand chose en programmation mais en piochant j'ai peut être arrivé à quelque chose. Sutout si le code n'est pas propre faite moi signe.Merci Dans le module chèque j'ai crée deux inputs. -somme mini pour faire un chèque -somme maxi pour faire un chèque. Tout fonctionne dans la logique des choses pour une commande qui suit son chemin normalement jusqu'à la validation par le paiement. Mais il y à un bug: quand est sur sur la page CHOISISSEZ VOTRE MÉTHODE DE PAIEMENTet qu'il choisisse soit : -DE retourner sur récapitulatif et de supprimer des produits cela fonctionnera très bien -Par contre si il choisit de supprimer le panier,cela ne fonctionne pas car la méthode de paiement par chèque restera visible quelque soit le montant.pourquoi?, Je suis sur 1.6 if (!defined('_PS_VERSION_')) exit; class Cheque extends PaymentModule { private $_html = ''; private $_postErrors = array(); public $chequeName; public $address; public $extra_mail_vars; public $sommeMini; public $sommeMaxi; public function __construct() { $this->name = 'cheque'; $this->tab = 'payments_gateways'; $this->version = '2.5.4'; $this->author = 'PrestaShop'; $this->controllers = array('payment', 'validation'); $this->currencies = true; $this->currencies_mode = 'checkbox'; $config = Configuration::getMultiple(array('CHEQUE_NAME', 'CHEQUE_ADDRESS','somme_Mini','somme_Maxi')); if (isset($config['CHEQUE_NAME'])) $this->chequeName = $config['CHEQUE_NAME']; if (isset($config['CHEQUE_ADDRESS'])) $this->address = $config['CHEQUE_ADDRESS']; if (isset($config['somme_Mini'])) $this->sommeMini = $config['somme_Mini']; if (isset($config['somme_Maxi'])) $this->sommeMaxi = $config['somme_Maxi']; $this->bootstrap = true; parent::__construct(); $this->displayName = $this->l('Payments by check'); $this->description = $this->l('This module allows you to accept payments by check.'); $this->confirmUninstall = $this->l('Are you sure you want to delete these details?'); if ((!isset($this->chequeName) || !isset($this->address) || empty($this->chequeName) || empty($this->address) || empty($this->sommeMini) || empty($this->sommeMaxi))) $this->warning = $this->l('The "Pay to the order of" and "Address" fields must be configured before using this module.'); if (!count(Currency::checkPaymentCurrencies($this->id))) $this->warning = $this->l('No currency has been set for this module.'); $this->extra_mail_vars = array( '{cheque_name}' => Configuration::get('CHEQUE_NAME'), '{cheque_address}' => Configuration::get('CHEQUE_ADDRESS'), '{cheque_address_html}' => str_replace("\n", '<br />', Configuration::get('CHEQUE_ADDRESS')) ); } public function install() { if (!parent::install() || !$this->registerHook('payment') || !$this->registerHook('paymentReturn')) return false; return true; } public function uninstall() { if (!Configuration::deleteByName('CHEQUE_NAME') || !Configuration::deleteByName('CHEQUE_ADDRESS') || !Configuration::deleteByName('somme_Mini') || !Configuration::deleteByName('somme_Maxi') || !parent::uninstall()) return false; return true; } private function _postValidation() { if (Tools::isSubmit('btnSubmit')) { if (!Tools::getValue('CHEQUE_NAME')) $this->_postErrors[] = $this->l('The "Pay to the order of" field is required.'); elseif (!Tools::getValue('CHEQUE_ADDRESS')) $this->_postErrors[] = $this->l('The "Address" field is required.'); } } private function _postProcess() { if (Tools::isSubmit('btnSubmit')) { Configuration::updateValue('CHEQUE_NAME', Tools::getValue('CHEQUE_NAME')); Configuration::updateValue('CHEQUE_ADDRESS', Tools::getValue('CHEQUE_ADDRESS')); Configuration::updateValue('somme_Mini', Tools::getValue('somme_Mini')); Configuration::updateValue('somme_Maxi', Tools::getValue('somme_Maxi')); } $this->_html .= $this->displayConfirmation($this->l('Settings updated')); } private function _displayCheque() { return $this->display(__FILE__, 'infos.tpl'); } public function getContent() { $this->_html = ''; if (Tools::isSubmit('btnSubmit')) { $this->_postValidation(); if (!count($this->_postErrors)) $this->_postProcess(); else foreach ($this->_postErrors as $err) $this->_html .= $this->displayError($err); } $this->_html .= $this->_displayCheque(); $this->_html .= $this->renderForm(); return $this->_html; } public function hookPayment($params) { if (!$this->active) return; if (!$this->checkCurrency($params['cart'])) return; if (($params['cart']->getOrderTotal(true,3))<=$this->sommeMini) return; if (($params['cart']->getOrderTotal())>=$this->sommeMaxi) return; { $this->smarty->assign(array( 'this_path' => $this->_path, 'this_path_cheque' => $this->_path, 'this_path_ssl' => Tools::getShopDomainSsl(true, true).__PS_BASE_URI__.'modules/'.$this->name.'/' )); return $this->display(__FILE__, 'payment.tpl'); } } public function hookPaymentReturn($params) { if (!$this->active) return; $state = $params['objOrder']->getCurrentState(); if (in_array($state, array(Configuration::get('PS_OS_CHEQUE'), Configuration::get('PS_OS_OUTOFSTOCK'), Configuration::get('PS_OS_OUTOFSTOCK_UNPAID')))) { $this->smarty->assign(array( 'total_to_pay' => Tools::displayPrice($params['total_to_pay'], $params['currencyObj'], false), 'chequeName' => $this->chequeName, 'chequeAddress' => Tools::nl2br($this->address), 'status' => 'ok', 'id_order' => $params['objOrder']->id )); if (isset($params['objOrder']->reference) && !empty($params['objOrder']->reference)) $this->smarty->assign('reference', $params['objOrder']->reference); } else $this->smarty->assign('status', 'failed'); return $this->display(__FILE__, 'payment_return.tpl'); } public function checkCurrency($cart) { $currency_order = new Currency((int)($cart->id_currency)); $currencies_module = $this->getCurrency((int)$cart->id_currency); if (is_array($currencies_module)) foreach ($currencies_module as $currency_module) if ($currency_order->id == $currency_module['id_currency']) return true; return false; } public function renderForm() { $fields_form = array( 'form' => array( 'legend' => array( 'title' => $this->l('Contact details'), 'icon' => 'icon-envelope' ), 'input' => array( array( 'type' => 'text', 'label' => $this->l('Pay to the order of (name)'), 'name' => 'CHEQUE_NAME', 'required' => true ), array( 'type' => 'textarea', 'label' => $this->l('Address'), 'desc' => $this->l('Address where the check should be sent to.'), 'name' => 'CHEQUE_ADDRESS', 'required' => true ), array( 'type' => 'text', 'label' => $this->l('Valeur minimale pour faire un chèque'), 'desc' => $this->l('Valeur minimum d\'achat pour acceptation de paiement par chèque'), 'name' => 'somme_Mini', 'required' => true ), array( 'type' => 'text', 'label' => $this->l('Valeur maximale pour faire un chèque'), 'desc' => $this->l('Valeur maximum d\'achat pour acceptation de paiement par chèque'), 'name' => 'somme_Maxi', 'required' => true ), ), 'submit' => array( 'title' => $this->l('Save'), ) ), ); $helper = new HelperForm(); $helper->show_toolbar = false; $helper->table = $this->table; $lang = new Language((int)Configuration::get('PS_LANG_DEFAULT')); $helper->default_form_language = $lang->id; $helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') ? Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') : 0; $this->fields_form = array(); $helper->id = (int)Tools::getValue('id_carrier'); $helper->identifier = $this->identifier; $helper->submit_action = 'btnSubmit'; $helper->currentIndex = $this->context->link->getAdminLink('AdminModules', false).'&configure='.$this->name.'&tab_module='.$this->tab.'&module_name='.$this->name; $helper->token = Tools::getAdminTokenLite('AdminModules'); $helper->tpl_vars = array( 'fields_value' => $this->getConfigFieldsValues(), 'languages' => $this->context->controller->getLanguages(), 'id_language' => $this->context->language->id ); return $helper->generateForm(array($fields_form)); } public function getConfigFieldsValues() { return array( 'CHEQUE_NAME' => Tools::getValue('CHEQUE_NAME', Configuration::get('CHEQUE_NAME')), 'CHEQUE_ADDRESS' => Tools::getValue('CHEQUE_ADDRESS', Configuration::get('CHEQUE_ADDRESS')), 'somme_Mini' => Tools::getValue('somme_Mini', Configuration::get('somme_Mini')), 'somme_Maxi' => Tools::getValue('somme_Maxi', Configuration::get('somme_Maxi')), ); } } Link to comment Share on other sites More sharing options...
DevNet Posted December 29, 2014 Share Posted December 29, 2014 (edited) Salut, Difficile à lire le code comme ça Utilise la balise code de l'éditeur. A+ Edited December 29, 2014 by DevNet (see edit history) Link to comment Share on other sites More sharing options...
Le Sultan Posted December 29, 2014 Author Share Posted December 29, 2014 Salut, Difficile à lire le code comme ça Utilise la balise code de l'éditeur. A+ Merci je suis tout nouveau en programmation.Comment faire? Link to comment Share on other sites More sharing options...
DevNet Posted January 7, 2015 Share Posted January 7, 2015 Salut, Dès que tu souhaites mettre en avant du code source dans ton message, utilise la méthode 'insérer un extrait de code' depuis l'éditeur, symbole bleu : <> A+ Link to comment Share on other sites More sharing options...
Le Sultan Posted January 7, 2015 Author Share Posted January 7, 2015 Salut, Dès que tu souhaites mettre en avant du code source dans ton message, utilise la méthode 'insérer un extrait de code' depuis l'éditeur, symbole bleu : <> A+ class Cheque1 extends PaymentModule { private $_html = ''; private $_postErrors = array(); public $cheque1Name; public $address; public $extra_mail_vars; public $sommeMini; public $sommeMaxi; public function __construct() { $this->name = 'cheque1'; $this->tab = 'payments_gateways'; $this->version = '2.5.4'; $this->author = 'PrestaShop'; $this->controllers = array('payment', 'validation'); $this->currencies = true; $this->currencies_mode = 'checkbox'; $config = Configuration::getMultiple(array('CHEQUE1_NAME', 'CHEQUE1_ADDRESS','somme_Mini','somme_Maxi')); if (isset($config['CHEQUE1_NAME'])) $this->cheque1Name = $config['CHEQUE1_NAME']; if (isset($config['CHEQUE1_ADDRESS'])) $this->cheque1address = $config['CHEQUE1_ADDRESS']; if (isset($config['somme_Mini'])) $this->sommeMini = $config['somme_Mini']; if (isset($config['somme_Maxi'])) $this->sommeMaxi = $config['somme_Maxi']; $this->bootstrap = true; parent::__construct(); $this->displayName = $this->l('Payments by check'); $this->description = $this->l('This module allows you to accept payments by check.'); $this->confirmUninstall = $this->l('Are you sure you want to delete these details?'); if ((!isset($this->cheque1Name) || !isset($this->cheque1address) || empty($this->cheque1Name) || empty($this->cheque1address) || empty($this->sommeMini) || empty($this->sommeMaxi))) $this->warning = $this->l('The "Pay to the order of" and "Address" fields must be configured before using this module.'); if (!count(Currency::checkPaymentCurrencies($this->id))) $this->warning = $this->l('No currency has been set for this module.'); $this->extra_mail_vars = array( '{cheque1_name}' => Configuration::get('CHEQUE1_NAME'), '{cheque1_address}' => Configuration::get('CHEQUE1_ADDRESS'), '{cheque1_address_html}' => str_replace("\n", '<br />', Configuration::get('CHEQUE1_ADDRESS')) ); } public function install() { if (!parent::install() || !$this->registerHook('payment') || !$this->registerHook('paymentReturn')) return false; return true; } public function uninstall() { if (!Configuration::deleteByName('CHEQUE1_NAME') || !Configuration::deleteByName('CHEQUE1_ADDRESS') || !Configuration::deleteByName('somme_Mini') || !Configuration::deleteByName('somme_Maxi') || !parent::uninstall()) return false; return true; } private function _postValidation() { if (Tools::isSubmit('btnSubmit')) { if (!Tools::getValue('CHEQUE1_NAME')) $this->_postErrors[] = $this->l('The "Pay to the order of" field is required.'); elseif (!Tools::getValue('CHEQUE1_ADDRESS')) $this->_postErrors[] = $this->l('The "Address" field is required.'); } } private function _postProcess() { if (Tools::isSubmit('btnSubmit')) { Configuration::updateValue('CHEQUE1_NAME', Tools::getValue('CHEQUE1_NAME')); Configuration::updateValue('CHEQUE1_ADDRESS', Tools::getValue('CHEQUE1_ADDRESS')); Configuration::updateValue('somme_Mini', Tools::getValue('somme_Mini')); Configuration::updateValue('somme_Maxi', Tools::getValue('somme_Maxi')); } $this->_html .= $this->displayConfirmation($this->l('Settings updated')); } private function _displayCheque1() { return $this->display(__FILE__, 'infos.tpl'); } public function getContent() { $this->_html = ''; if (Tools::isSubmit('btnSubmit')) { $this->_postValidation(); if (!count($this->_postErrors)) $this->_postProcess(); else foreach ($this->_postErrors as $err) $this->_html .= $this->displayError($err); } $this->_html .= $this->_displayCheque1(); $this->_html .= $this->renderForm(); return $this->_html; } public function hookPayment($params) { if (!$this->active) return; if (!$this->checkCurrency($params['cart'])) return; if (($params['cart']->getOrderTotal(true,3))<=$this->sommeMini) return; if (($params['cart']->getOrderTotal())>=$this->sommeMaxi) return; { $this->smarty->assign(array( 'this_path' => $this->_path, 'this_path_cheque1' => $this->_path, 'this_path_ssl' => Tools::getShopDomainSsl(true, true).__PS_BASE_URI__.'modules/'.$this->name.'/' )); return $this->display(__FILE__, 'payment.tpl'); } } public function hookPaymentReturn($params) { if (!$this->active) return; $state = $params['objOrder']->getCurrentState(); if (in_array($state, array(Configuration::get('PS_OS_CHEQUE1'), Configuration::get('PS_OS_OUTOFSTOCK'), Configuration::get('PS_OS_OUTOFSTOCK_UNPAID')))) { $this->smarty->assign(array( 'total_to_pay' => Tools::displayPrice($params['total_to_pay'], $params['currencyObj'], false), 'cheque1Name' => $this->cheque1Name, 'cheque1Address' => Tools::nl2br($this->cheque1address), 'status' => 'ok', 'id_order' => $params['objOrder']->id, 'date_format' => $this->context->language->date_format_lite )); if (isset($params['objOrder']->reference) && !empty($params['objOrder']->reference)) $this->smarty->assign('reference', $params['objOrder']->reference); } else $this->smarty->assign('status', 'failed'); return $this->display(__FILE__, 'payment_return.tpl'); } public function checkCurrency($cart) { $currency_order = new Currency((int)($cart->id_currency)); $currencies_module = $this->getCurrency((int)$cart->id_currency); if (is_array($currencies_module)) foreach ($currencies_module as $currency_module) if ($currency_order->id == $currency_module['id_currency']) return true; return false; } public function renderForm() { $fields_form = array( 'form' => array( 'legend' => array( 'title' => $this->l('Contact details'), 'icon' => 'icon-envelope' ), 'input' => array( array( 'type' => 'text', 'label' => $this->l('Pay to the order of (name)'), 'name' => 'CHEQUE1_NAME', 'required' => true ), array( 'type' => 'textarea', 'label' => $this->l('Address'), 'desc' => $this->l('Address where the check should be sent to.'), 'name' => 'CHEQUE1_ADDRESS', 'required' => true ), array( 'type' => 'text', 'label' => $this->l('Valeur minimale pour faire un chèque'), 'desc' => $this->l('Valeur minimum d\'achat pour acceptation de paiement par chèque'), 'name' => 'somme_Mini', 'required' => true ), array( 'type' => 'text', 'label' => $this->l('Valeur maximale pour faire un chèque'), 'desc' => $this->l('Valeur maximum d\'achat pour acceptation de paiement par chèque'), 'name' => 'somme_Maxi', 'required' => true ), ), 'submit' => array( 'title' => $this->l('Save'), ) ), ); $helper = new HelperForm(); $helper->show_toolbar = false; $helper->table = $this->table; $lang = new Language((int)Configuration::get('PS_LANG_DEFAULT')); $helper->default_form_language = $lang->id; $helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') ? Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') : 0; $this->fields_form = array(); $helper->id = (int)Tools::getValue('id_carrier'); $helper->identifier = $this->identifier; $helper->submit_action = 'btnSubmit'; $helper->currentIndex = $this->context->link->getAdminLink('AdminModules', false).'&configure='.$this->name.'&tab_module='.$this->tab.'&module_name='.$this->name; $helper->token = Tools::getAdminTokenLite('AdminModules'); $helper->tpl_vars = array( 'fields_value' => $this->getConfigFieldsValues(), 'languages' => $this->context->controller->getLanguages(), 'id_language' => $this->context->language->id ); return $helper->generateForm(array($fields_form)); } public function getConfigFieldsValues() { return array( 'CHEQUE1_NAME' => Tools::getValue('CHEQUE1_NAME', Configuration::get('CHEQUE1_NAME')), 'CHEQUE1_ADDRESS' => Tools::getValue('CHEQUE1_ADDRESS', Configuration::get('CHEQUE1_ADDRESS')), 'somme_Mini' => Tools::getValue('somme_Mini', Configuration::get('somme_Mini')), 'somme_Maxi' => Tools::getValue('somme_Maxi', Configuration::get('somme_Maxi')), ); } } Ok et merci voila mon code Link to comment Share on other sites More sharing options...
cyssoo Posted January 12, 2015 Share Posted January 12, 2015 Bonsoir, Pourquoi ne pas utiliser Smarty pour déterminer le montant total du panier lors du passage par ce mode de paiement ? Cela me semble beaucoup plus facile à gérer ! Quelque chose comme {if $cart->getOrderTotal(true) < 90} ou {if $cart->getOrderTotal(true) > 150} devrait faire l'affaire non ? Il suffit que les deux input retournent une variable Smarty et le tour est joué ! Cela donnerait : {if $cart->getOrderTotal(true) < $MaVarMin} ou {if $cart->getOrderTotal(true) > $MaVarMax} Cyssoo Link to comment Share on other sites More sharing options...
Le Sultan Posted January 24, 2015 Author Share Posted January 24, 2015 bonsoir est merci de votre réponse mais pourriez vous m'aider d'avantage en me disant ou intégrer ce code car je suis perdu.Merci beaucoup Link to comment Share on other sites More sharing options...
cyssoo Posted December 29, 2015 Share Posted December 29, 2015 Yop ! Quand je vois la date de ma réponse, j'ai un petit peu l'impression d'être un gros troll... Bon, dans l'idée, il faudrait rajouter cela dans payment.tpl, et encapsuler tout le code du fichier dans la condition. Donc, sur le même principe que cité plus haut : {if $cart->getOrderTotal(true) < $MaVarMin} ou {if $cart->getOrderTotal(true) > $MaVarMax} //Mon Code {/if} A tester, non testé Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now