/**
  * Creates the Back Office configuration page
  */
 public function getContent()
 {
     $output = null;
     if (Tools::isSubmit('submit' . $this->name)) {
         $account_id = (string) Tools::getValue('BP_ACCOUNT_ID');
         $secret_key = (string) Tools::getValue('BP_SECRET_KEY');
         $transaction_mode = (string) Tools::getValue('BP_TRANSACTION_MODE');
         $transaction_type = (string) Tools::getValue('BP_TRANSACTION_TYPE');
         $payment_type = (string) Tools::getValue('BP_PAYMENT_TYPE');
         $visa_enabled = (string) Tools::getValue('BP_CARD_TYPES_VISA');
         $mastercard_enabled = (string) Tools::getValue('BP_CARD_TYPES_MC');
         $amex_enabled = (string) Tools::getValue('BP_CARD_TYPES_AMEX');
         $discover_enabled = (string) Tools::getValue('BP_CARD_TYPES_DISC');
         $require_cvv2 = (string) Tools::getValue('BP_REQUIRE_CVV2');
         $checkout_iframe = (string) Tools::getValue('BP_CHECKOUT_IFRAME');
         $allow_stored_payments = (string) Tools::getValue('BP_ALLOW_STORED_PAYMENTS');
         $display_secure_logo = (string) Tools::getValue('BP_DISPLAY_LOGO');
         if (!$account_id || empty($account_id) || !Validate::isGenericName($account_id) || Tools::strlen($account_id) != 12) {
             $output .= $this->displayError($this->l('Invalid BluePay Account ID'));
         } else {
             if (!$secret_key || empty($secret_key) || !Validate::isGenericName($secret_key) || Tools::strlen($secret_key) != 32) {
                 $output .= $this->displayError($this->l('Invalid BluePay Secret Key'));
             } else {
                 if ($payment_type != 'ACH' && (empty($visa_enabled) && empty($mastercard_enabled) && empty($amex_enabled) && empty($discover_enabled))) {
                     $output .= $this->displayError($this->l('Please specify at least one card type to accept'));
                 } else {
                     if ($payment_type == 'ACH') {
                         $transaction_type = 'SALE';
                     }
                     Configuration::updateValue('BP_ACCOUNT_ID', $account_id);
                     Configuration::updateValue('BP_SECRET_KEY', $secret_key);
                     Configuration::updateValue('BP_TRANSACTION_MODE', $transaction_mode);
                     Configuration::updateValue('BP_TRANSACTION_TYPE', $transaction_type);
                     Configuration::updatevalue('BP_PAYMENT_TYPE', $payment_type);
                     Configuration::updateValue('BP_CARD_TYPES_VISA', $visa_enabled);
                     Configuration::updateValue('BP_CARD_TYPES_MC', $mastercard_enabled);
                     Configuration::updateValue('BP_CARD_TYPES_AMEX', $amex_enabled);
                     Configuration::updateValue('BP_CARD_TYPES_DISC', $discover_enabled);
                     Configuration::updateValue('BP_REQUIRE_CVV2', $require_cvv2);
                     Configuration::updateValue('BP_CHECKOUT_IFRAME', $checkout_iframe);
                     Configuration::updateValue('BP_ALLOW_STORED_PAYMENTS', $allow_stored_payments);
                     Configuration::updateValue('BP_DISPLAY_LOGO', $display_secure_logo);
                     $output .= $this->displayConfirmation($this->l('Settings updated'));
                 }
             }
         }
     }
     return $output . $this->displayForm();
 }
 /**
  * Create order states
  *
  * @version 1.0
  * @global object $cookie Informations users
  * @return boolean
  */
 private function _installOrderState()
 {
     if (version_compare(_PS_VERSION_, '1.5', '>')) {
         $cookie = $this->context->cookie;
     } else {
         global $cookie;
     }
     $iso = Language::getIsoById((int) $cookie->id_lang);
     // List of order state
     $oStates = OrderState::getOrderStates($cookie->id_lang);
     $orderStateName = array();
     // Just name
     foreach ($oStates as $state) {
         $orderStateName[$state['id_order_state']] = $state['name'];
     }
     // HIPAY_PENDING
     $translate = $iso == "fr" ? 'HIPAY - EN ATTENTE' : 'HIPAY - PENDING';
     if (!in_array($translate, $orderStateName)) {
         $OS = new OrderState();
         $OS->name = array();
         foreach (Language::getLanguages() as $language) {
             if (Tools::strtolower($language['iso_code']) == 'fr') {
                 $OS->name[$language['id_lang']] = 'HIPAY - EN ATTENTE';
             } else {
                 $OS->name[$language['id_lang']] = 'HIPAY - PENDING';
             }
         }
     } else {
         // if order state exists
         $key = array_search($translate, $orderStateName);
         $OS = new OrderState($key);
     }
     $OS->send_email = false;
     $OS->color = "RoyalBlue";
     $OS->hidden = false;
     $OS->delivery = false;
     $OS->logable = true;
     $OS->invoice = false;
     $OS->paid = false;
     $OS->module_name = $this->name;
     if (!$OS->save()) {
         return false;
     }
     if (!in_array($translate, $orderStateName)) {
         Configuration::updatevalue('HIPAY_PENDING', $OS->id);
     } else {
         Configuration::updatevalue('HIPAY_PENDING', $key);
         if (version_compare(_PS_VERSION_, '1.5', '>')) {
             $file = 'os/' . $OS->id . '.gif';
         } else {
             $file = 'tmp/order_state_mini_' . $OS->id . '.gif';
         }
     }
     @copy(dirname(__FILE__) . "/wait.gif", _PS_IMG_DIR_ . $file);
     // HIPAY_CHALLENGED
     $translate = $iso == "fr" ? 'HIPAY - CONTESTÉ' : 'HIPAY - CHALLENGED';
     if (!in_array($translate, $orderStateName)) {
         $OS = new OrderState();
         $OS->name = array();
         foreach (Language::getLanguages() as $language) {
             if (Tools::strtolower($language['iso_code']) == 'fr') {
                 $OS->name[$language['id_lang']] = 'HIPAY - CONTESTÉ';
             } else {
                 $OS->name[$language['id_lang']] = 'HIPAY - CHALLENGED';
             }
         }
     } else {
         // if order state exists
         $key = array_search($translate, $orderStateName);
         $OS = new OrderState($key);
     }
     $OS->send_email = false;
     $OS->color = "RoyalBlue";
     $OS->hidden = false;
     $OS->delivery = false;
     $OS->logable = true;
     $OS->invoice = false;
     $OS->paid = false;
     $OS->module_name = $this->name;
     if (!$OS->save()) {
         return false;
     }
     if (!in_array($translate, $orderStateName)) {
         Configuration::updatevalue('HIPAY_CHALLENGED', $OS->id);
     } else {
         Configuration::updatevalue('HIPAY_CHALLENGED', $key);
         if (version_compare(_PS_VERSION_, '1.5', '>')) {
             $file = 'os/' . $OS->id . '.gif';
         } else {
             $file = 'tmp/order_state_mini_' . $OS->id . '.gif';
         }
     }
     @copy(dirname(__FILE__) . "/wait.gif", _PS_IMG_DIR_ . $file);
     // HIPAY_EXPIRED
     $translate2 = $iso == "fr" ? 'HIPAY - EXPIRÉ' : 'HIPAY - EXPIRED';
     if (!in_array($translate2, $orderStateName)) {
         $OS = new OrderState();
         $OS->name = array();
         foreach (Language::getLanguages() as $language) {
             if (Tools::strtolower($language['iso_code']) == 'fr') {
                 $OS->name[$language['id_lang']] = 'HIPAY - EXPIRÉ';
             } else {
                 $OS->name[$language['id_lang']] = 'HIPAY - EXPIRED';
             }
         }
     } else {
         $key = array_search($translate2, $orderStateName);
         $OS = new OrderState($key);
     }
     $OS->send_email = false;
     $OS->color = "#8f0621";
     $OS->hidden = false;
     $OS->delivery = false;
     $OS->logable = true;
     $OS->invoice = false;
     $OS->paid = false;
     $OS->module_name = $this->name;
     if (!$OS->save()) {
         return false;
     }
     if (!in_array($translate2, $orderStateName)) {
         Configuration::updateValue('HIPAY_EXPIRED', $OS->id);
         if (version_compare(_PS_VERSION_, '1.5', '>')) {
             $file = 'os/' . $OS->id . '.gif';
         } else {
             $file = 'tmp/order_state_mini_' . $OS->id . '.gif';
         }
         @copy(dirname(__FILE__) . "/done.gif", _PS_IMG_DIR_ . $file);
     } else {
         // if order state exists
         Configuration::updateValue('HIPAY_EXPIRED', $key);
         @copy(dirname(__FILE__) . "/done.gif", _PS_IMG_DIR_ . 'os/' . $OS->id . ".gif");
     }
     // HIPAY_AUTHORIZED
     $translate3 = $iso == "fr" ? 'HIPAY - AUTORISÉ' : 'HIPAY - AUTHORIZED';
     if (!in_array($translate3, $orderStateName)) {
         $OS = new OrderState();
         $OS->name = array();
         foreach (Language::getLanguages() as $language) {
             if (Tools::strtolower($language['iso_code']) == 'fr') {
                 $OS->name[$language['id_lang']] = 'HIPAY - AUTORISÉ';
             } else {
                 $OS->name[$language['id_lang']] = 'HIPAY - AUTHORIZED';
             }
         }
         $OS->send_email = false;
         $OS->color = "LimeGreen";
         $OS->hidden = false;
         $OS->delivery = false;
         $OS->logable = true;
         $OS->invoice = false;
         $OS->paid = false;
         $OS->module_name = $this->name;
         if (!$OS->save()) {
             return false;
         }
         Configuration::updateValue('HIPAY_AUTHORIZED', $OS->id);
         if (version_compare(_PS_VERSION_, '1.5', '>')) {
             $file = 'os/' . $OS->id . '.gif';
         } else {
             $file = 'tmp/order_state_mini_' . $OS->id . '.gif';
         }
         @copy(dirname(__FILE__) . "/done.gif", _PS_IMG_DIR_ . $file);
     } else {
         // if order state exists
         $key = array_search($translate3, $orderStateName);
         $OS = new OrderState($key);
         $OS->send_email = false;
         $OS->color = "LimeGreen";
         $OS->hidden = false;
         $OS->delivery = false;
         $OS->logable = true;
         $OS->invoice = false;
         $OS->paid = false;
         $OS->module_name = $this->name;
         if (!$OS->save()) {
             return false;
         }
         Configuration::updateValue('HIPAY_AUTHORIZED', $key);
         @copy(dirname(__FILE__) . "/done.gif", _PS_IMG_DIR_ . 'os/' . $OS->id . ".gif");
     }
     // HIPAY_CAPTURE_REQUESTED
     $translate2 = $iso == "fr" ? 'HIPAY - CAPTURE DEMANDÉE' : 'HIPAY - CAPTURE REQUESTED';
     if (!in_array($translate2, $orderStateName)) {
         $OS = new OrderState();
         $OS->name = array();
         foreach (Language::getLanguages() as $language) {
             if (Tools::strtolower($language['iso_code']) == 'fr') {
                 $OS->name[$language['id_lang']] = 'HIPAY - CAPTURE DEMANDÉE';
             } else {
                 $OS->name[$language['id_lang']] = 'HIPAY - CAPTURE REQUESTED';
             }
         }
         $OS->send_email = false;
         $OS->color = "LimeGreen";
         $OS->hidden = false;
         $OS->delivery = false;
         $OS->logable = true;
         $OS->invoice = false;
         $OS->paid = false;
         $OS->module_name = $this->name;
         if (!$OS->save()) {
             return false;
         }
         Configuration::updateValue('HIPAY_CAPTURE_REQUESTED', $OS->id);
         if (version_compare(_PS_VERSION_, '1.5', '>')) {
             $file = 'os/' . $OS->id . '.gif';
         } else {
             $file = 'tmp/order_state_mini_' . $OS->id . '.gif';
         }
         @copy(dirname(__FILE__) . "/done.gif", _PS_IMG_DIR_ . $file);
     } else {
         // if order state exists
         $key = array_search($translate2, $orderStateName);
         $OS = new OrderState($key);
         $OS->send_email = false;
         $OS->color = "LimeGreen";
         $OS->hidden = false;
         $OS->delivery = false;
         $OS->logable = true;
         $OS->invoice = false;
         $OS->paid = false;
         $OS->module_name = $this->name;
         if (!$OS->save()) {
             return false;
         }
         Configuration::updateValue('HIPAY_CAPTURE_REQUESTED', $key);
         @copy(dirname(__FILE__) . "/done.gif", _PS_IMG_DIR_ . 'os/' . $OS->id . ".gif");
     }
     // HIPAY_CAPTURED
     $translate2 = $iso == "fr" ? 'HIPAY - CAPTURÉE' : 'HIPAY - CAPTURED';
     if (!in_array($translate2, $orderStateName)) {
         $OS = new OrderState();
         $OS->name = array();
         foreach (Language::getLanguages() as $language) {
             if (Tools::strtolower($language['iso_code']) == 'fr') {
                 $OS->name[$language['id_lang']] = 'HIPAY - CAPTURÉE';
             } else {
                 $OS->name[$language['id_lang']] = 'HIPAY - CAPTURED';
             }
         }
         $OS->send_email = false;
         $OS->color = "LimeGreen";
         $OS->hidden = false;
         $OS->delivery = false;
         $OS->logable = true;
         $OS->invoice = false;
         $OS->paid = false;
         $OS->module_name = $this->name;
         if (!$OS->save()) {
             return false;
         }
         Configuration::updateValue('HIPAY_CAPTURED', $OS->id);
         if (version_compare(_PS_VERSION_, '1.5', '>')) {
             $file = 'os/' . $OS->id . '.gif';
         } else {
             $file = 'tmp/order_state_mini_' . $OS->id . '.gif';
         }
         @copy(dirname(__FILE__) . "/done.gif", _PS_IMG_DIR_ . $file);
     } else {
         // if order state exists
         $key = array_search($translate2, $orderStateName);
         $OS = new OrderState($key);
         $OS->send_email = false;
         $OS->color = "LimeGreen";
         $OS->hidden = false;
         $OS->delivery = false;
         $OS->logable = true;
         $OS->invoice = false;
         $OS->paid = false;
         $OS->module_name = $this->name;
         if (!$OS->save()) {
             return false;
         }
         Configuration::updateValue('HIPAY_CAPTURED', $key);
         @copy(dirname(__FILE__) . "/done.gif", _PS_IMG_DIR_ . 'os/' . $OS->id . ".gif");
     }
     // HIPAY_PARTIALLY_CAPTURED
     $translate2 = $iso == "fr" ? 'HIPAY - CAPTURE PARTIELLE' : 'HIPAY - PARTIALLY CAPTURED';
     if (!in_array($translate2, $orderStateName)) {
         $OS = new OrderState();
         $OS->name = array();
         foreach (Language::getLanguages() as $language) {
             if (Tools::strtolower($language['iso_code']) == 'fr') {
                 $OS->name[$language['id_lang']] = 'HIPAY - CAPTURE PARTIELLE';
             } else {
                 $OS->name[$language['id_lang']] = 'HIPAY - PARTIALLY CAPTURED';
             }
         }
         $OS->send_email = false;
         $OS->color = "LimeGreen";
         $OS->hidden = false;
         $OS->delivery = false;
         $OS->logable = true;
         $OS->invoice = false;
         $OS->paid = true;
         $OS->module_name = $this->name;
         if (!$OS->save()) {
             return false;
         }
         Configuration::updateValue('HIPAY_PARTIALLY_CAPTURED', $OS->id);
         if (version_compare(_PS_VERSION_, '1.5', '>')) {
             $file = 'os/' . $OS->id . '.gif';
         } else {
             $file = 'tmp/order_state_mini_' . $OS->id . '.gif';
         }
         @copy(dirname(__FILE__) . "/done.gif", _PS_IMG_DIR_ . $file);
     } else {
         // if order state exists
         $key = array_search($translate2, $orderStateName);
         $OS = new OrderState($key);
         $OS->send_email = false;
         $OS->color = "LimeGreen";
         $OS->hidden = false;
         $OS->delivery = false;
         $OS->logable = true;
         $OS->invoice = false;
         $OS->paid = true;
         $OS->module_name = $this->name;
         if (!$OS->save()) {
             return false;
         }
         Configuration::updateValue('HIPAY_PARTIALLY_CAPTURED', $key);
         @copy(dirname(__FILE__) . "/done.gif", _PS_IMG_DIR_ . 'os/' . $OS->id . ".gif");
     }
     // HIPAY_REFUND_REQUESTED
     $translate2 = $iso == "fr" ? 'HIPAY - REMBOURSEMENT DEMANDÉ' : 'HIPAY - REFUND REQUESTED';
     if (!in_array($translate2, $orderStateName)) {
         $OS = new OrderState();
         $OS->name = array();
         foreach (Language::getLanguages() as $language) {
             if (Tools::strtolower($language['iso_code']) == 'fr') {
                 $OS->name[$language['id_lang']] = 'HIPAY - REMBOURSEMENT DEMANDÉ';
             } else {
                 $OS->name[$language['id_lang']] = 'HIPAY - REFUND REQUESTED';
             }
         }
         $OS->send_email = false;
         $OS->color = "#ec2e15";
         $OS->hidden = false;
         $OS->delivery = false;
         $OS->logable = true;
         $OS->invoice = false;
         $OS->paid = true;
         $OS->module_name = $this->name;
         if (!$OS->save()) {
             return false;
         }
         Configuration::updateValue('HIPAY_REFUND_REQUESTED', $OS->id);
         if (version_compare(_PS_VERSION_, '1.5', '>')) {
             $file = 'os/' . $OS->id . '.gif';
         } else {
             $file = 'tmp/order_state_mini_' . $OS->id . '.gif';
         }
         @copy(dirname(__FILE__) . "/done.gif", _PS_IMG_DIR_ . $file);
     } else {
         // if order state exists
         $key = array_search($translate2, $orderStateName);
         $OS = new OrderState($key);
         $OS->send_email = false;
         $OS->color = "#ec2e15";
         $OS->hidden = false;
         $OS->delivery = false;
         $OS->logable = true;
         $OS->invoice = false;
         $OS->paid = true;
         $OS->module_name = $this->name;
         if (!$OS->save()) {
             return false;
         }
         Configuration::updateValue('HIPAY_REFUND_REQUESTED', $key);
         @copy(dirname(__FILE__) . "/done.gif", _PS_IMG_DIR_ . 'os/' . $OS->id . ".gif");
     }
     // HIPAY_REFUNDED
     $translate2 = $iso == "fr" ? 'HIPAY - REMBOURSÉ' : 'HIPAY - REFUNDED';
     if (!in_array($translate2, $orderStateName)) {
         $OS = new OrderState();
         $OS->name = array();
         foreach (Language::getLanguages() as $language) {
             if (Tools::strtolower($language['iso_code']) == 'fr') {
                 $OS->name[$language['id_lang']] = 'HIPAY - REMBOURSÉ';
             } else {
                 $OS->name[$language['id_lang']] = 'HIPAY - REFUNDED';
             }
         }
         $OS->send_email = false;
         $OS->color = "HotPink";
         $OS->hidden = false;
         $OS->delivery = false;
         $OS->logable = true;
         $OS->invoice = false;
         $OS->paid = true;
         $OS->module_name = $this->name;
         if (!$OS->save()) {
             return false;
         }
         Configuration::updateValue('HIPAY_REFUNDED', $OS->id);
         if (version_compare(_PS_VERSION_, '1.5', '>')) {
             $file = 'os/' . $OS->id . '.gif';
         } else {
             $file = 'tmp/order_state_mini_' . $OS->id . '.gif';
         }
         @copy(dirname(__FILE__) . "/done.gif", _PS_IMG_DIR_ . $file);
     } else {
         // if order state exists
         $key = array_search($translate2, $orderStateName);
         $OS = new OrderState($key);
         $OS->send_email = false;
         $OS->color = "HotPink";
         $OS->hidden = false;
         $OS->delivery = false;
         $OS->logable = true;
         $OS->invoice = false;
         $OS->paid = true;
         $OS->module_name = $this->name;
         if (!$OS->save()) {
             return false;
         }
         Configuration::updateValue('HIPAY_REFUNDED', $key);
         @copy(dirname(__FILE__) . "/done.gif", _PS_IMG_DIR_ . 'os/' . $OS->id . ".gif");
     }
     // HIPAY_DENIED
     $translate2 = $iso == "fr" ? 'HIPAY - REFUSÉ' : 'HIPAY - DENIED';
     if (!in_array($translate2, $orderStateName)) {
         $OS = new OrderState();
         $OS->name = array();
         foreach (Language::getLanguages() as $language) {
             if (Tools::strtolower($language['iso_code']) == 'fr') {
                 $OS->name[$language['id_lang']] = 'HIPAY - REFUSÉ';
             } else {
                 $OS->name[$language['id_lang']] = 'HIPAY - DENIED';
             }
         }
         $OS->send_email = false;
         $OS->color = "#8f0621";
         $OS->hidden = false;
         $OS->delivery = false;
         $OS->logable = false;
         $OS->invoice = false;
         $OS->paid = false;
         $OS->module_name = $this->name;
         if (!$OS->save()) {
             return false;
         }
         Configuration::updateValue('HIPAY_DENIED', $OS->id);
         if (version_compare(_PS_VERSION_, '1.5', '>')) {
             $file = 'os/' . $OS->id . '.gif';
         } else {
             $file = 'tmp/order_state_mini_' . $OS->id . '.gif';
         }
         @copy(dirname(__FILE__) . "/done.gif", _PS_IMG_DIR_ . $file);
     } else {
         // if order state exists
         $key = array_search($translate2, $orderStateName);
         $OS = new OrderState($key);
         $OS->send_email = false;
         $OS->color = "#8f0621";
         $OS->hidden = false;
         $OS->delivery = false;
         $OS->logable = false;
         $OS->invoice = false;
         $OS->paid = false;
         $OS->module_name = $this->name;
         if (!$OS->save()) {
             return false;
         }
         Configuration::updateValue('HIPAY_DENIED', $key);
         @copy(dirname(__FILE__) . "/done.gif", _PS_IMG_DIR_ . 'os/' . $OS->id . ".gif");
     }
     // HIPAY_CHARGEDBACK
     $translate2 = $iso == "fr" ? 'HIPAY - CHARGED BACK' : 'HIPAY - CHARGED BACK';
     if (!in_array($translate2, $orderStateName)) {
         $OS = new OrderState();
         $OS->name = array();
         foreach (Language::getLanguages() as $language) {
             if (Tools::strtolower($language['iso_code']) == 'fr') {
                 $OS->name[$language['id_lang']] = 'HIPAY - CHARGED BACK';
             } else {
                 $OS->name[$language['id_lang']] = 'HIPAY - CHARGED BACK';
             }
         }
         $OS->send_email = false;
         $OS->color = "#f89406";
         $OS->hidden = false;
         $OS->delivery = false;
         $OS->logable = true;
         $OS->invoice = false;
         $OS->paid = true;
         $OS->module_name = $this->name;
         if (!$OS->save()) {
             return false;
         }
         Configuration::updateValue('HIPAY_CHARGEDBACK', $OS->id);
         if (version_compare(_PS_VERSION_, '1.5', '>')) {
             $file = 'os/' . $OS->id . '.gif';
         } else {
             $file = 'tmp/order_state_mini_' . $OS->id . '.gif';
         }
         @copy(dirname(__FILE__) . "/done.gif", _PS_IMG_DIR_ . $file);
     } else {
         // if order state exists
         $key = array_search($translate2, $orderStateName);
         $OS = new OrderState($key);
         $OS->send_email = false;
         $OS->color = "#f89406";
         $OS->hidden = false;
         $OS->delivery = false;
         $OS->logable = true;
         $OS->invoice = false;
         $OS->paid = true;
         $OS->module_name = $this->name;
         if (!$OS->save()) {
             return false;
         }
         Configuration::updateValue('HIPAY_CHARGEDBACK', $key);
         @copy(dirname(__FILE__) . "/done.gif", _PS_IMG_DIR_ . 'os/' . $OS->id . ".gif");
     }
     return true;
 }