* @copyright 2007-2013 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ if (!defined('_PS_VERSION_')) exit; class BankWire extends PaymentModule { private $_html = ''; private $_postErrors = array(); public $details; public $owner; public $address; public $extra_mail_vars; public function __construct() { $this->name = 'bankwire'; $this->tab = 'payments_gateways'; $this->version = '0.6'; $this->author = 'PrestaShop'; $this->currencies = true; $this->currencies_mode = 'checkbox'; $config = Configuration::getMultiple(array('BANK_WIRE_DETAILS', 'BANK_WIRE_OWNER', 'BANK_WIRE_ADDRESS')); if (isset($config['BANK_WIRE_OWNER'])) $this->owner = $config['BANK_WIRE_OWNER']; if (isset($config['BANK_WIRE_DETAILS'])) $this->details = $config['BANK_WIRE_DETAILS']; if (isset($config['BANK_WIRE_ADDRESS'])) $this->address = $config['BANK_WIRE_ADDRESS']; parent::__construct(); $this->displayName = $this->l('Bank Wire'); $this->description = $this->l('Accept payments for your products via bank wire.'); $this->confirmUninstall = $this->l('Are you sure about removing these details?'); if (!isset($this->owner) || !isset($this->details) || !isset($this->address)) $this->warning = $this->l('Account owner and account details 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( '{bankwire_owner}' => Configuration::get('BANK_WIRE_OWNER'), '{bankwire_details}' => nl2br(Configuration::get('BANK_WIRE_DETAILS')), '{bankwire_address}' => nl2br(Configuration::get('BANK_WIRE_ADDRESS')) ); } public function install() { if (!parent::install() || !$this->registerHook('payment') || !$this->registerHook('paymentReturn')) return false; return true; } public function uninstall() { if (!Configuration::deleteByName('BANK_WIRE_DETAILS') || !Configuration::deleteByName('BANK_WIRE_OWNER') || !Configuration::deleteByName('BANK_WIRE_ADDRESS') || !parent::uninstall()) return false; return true; } private function _postValidation() { if (Tools::isSubmit('btnSubmit')) { if (!Tools::getValue('details')) $this->_postErrors[] = $this->l('Account details are required.'); elseif (!Tools::getValue('owner')) $this->_postErrors[] = $this->l('Account owner is required.'); } } private function _postProcess() { if (Tools::isSubmit('btnSubmit')) { Configuration::updateValue('BANK_WIRE_DETAILS', Tools::getValue('details')); Configuration::updateValue('BANK_WIRE_OWNER', Tools::getValue('owner')); Configuration::updateValue('BANK_WIRE_ADDRESS', Tools::getValue('address')); } $this->_html .= '
'.$this->l('Settings updated').'
'; } private function _displayBankWire() { $this->_html .= ''.$this->l('This module allows you to accept secure payments by bank wire.').'

'.$this->l('If the client chooses to pay by bank wire, the order\'s status will change to "Waiting for Payment."').'
'.$this->l('That said, you must manually confirm the order upon receiving the bank wire. ').'


'; } private function _displayForm() { $this->_html .= '
'.$this->l('Contact details').'
'.$this->l('Please specify the bank wire account details for customers.').'.

'.$this->l('Account owner').'
'.$this->l('Details').'

'.$this->l('Such as bank branch, IBAN number, BIC, etc...').'

'.$this->l('Bank address').'
'; } public function getContent() { $this->_html = '

'.$this->displayName.'

'; if (Tools::isSubmit('btnSubmit')) { $this->_postValidation(); if (!count($this->_postErrors)) $this->_postProcess(); else foreach ($this->_postErrors as $err) $this->_html .= '
'.$err.'
'; } else $this->_html .= '
'; $this->_displayBankWire(); $this->_displayForm(); return $this->_html; } public function hookPayment($params) { if (!$this->active) return; if (!$this->checkCurrency($params['cart'])) return; $this->smarty->assign(array( 'this_path' => $this->_path, 'this_path_bw' => $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 ($state == Configuration::get('PS_OS_BANKWIRE') || $state == Configuration::get('PS_OS_OUTOFSTOCK')) { $this->smarty->assign(array( 'total_to_pay' => Tools::displayPrice($params['total_to_pay'], $params['currencyObj'], false), 'bankwireDetails' => Tools::nl2br($this->details), 'bankwireAddress' => Tools::nl2br($this->address), 'bankwireOwner' => $this->owner, '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($cart->id_currency); $currencies_module = $this->getCurrency($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; } }