* @copyright Magavenue * @license http://www.opensource.org/licenses/osl-3.0.php Open-source licence 3.0 * @category modules * * @note If you want to customize the module, contact us at contact@magavenue.com */ use PrestaShop\PrestaShop\Core\Payment\PaymentOption; class InstallmentpaymentInstallmentpaymentModuleFrontController extends ModuleFrontController { public $ssl = true; public function __construct() { parent::__construct(); } public function initContent() { $this->display_column_left = false; $this->display_column_right = false; parent::initContent(); $id_order = Tools::getValue('select'); if (!Context::getContext()->customer->isLogged() && (int) $id_order > 0) { Tools::redirect( 'index.php?controller=authentication&back=' . urlencode($this->context->link->getModuleLink('installmentpayment', 'installmentpayment', array('select' => $id_order))) ); } $order = new Order((int) $id_order); $sql = 'SELECT * FROM `' . _DB_PREFIX_ . 'installmentpayment` WHERE id_cart=' . (int) $order->id_cart; $installment = Db::getInstance()->getRow($sql); if (isset($installment['rest']) && (float) $installment['rest'] > 0) { $rest_paid = $installment['rest']; } else { Tools::redirect( 'index.php?controller=authentication&back=' . urlencode($this->context->link->getModuleLink('installmentpayment', 'installmentpayment', array('select' => $id_order))) ); } if ((int) $id_order > 0) { Context::getContext()->cookie->__set('installmentpayment_id_order', $id_order); } $oldCart = new Cart($order->id_cart); $cart = $oldCart->duplicate(); $this->context->cookie->id_cart = $cart['cart']->id; $context = $this->context; $context->cart = $cart['cart']; $this->context->cookie->write(); $this->context->smarty->assign('hide_left_column', true); $this->context->smarty->assign('hide_right_column', true); if (Tools::substr(str_replace('.', '', _PS_VERSION_), 0, 2) == 16) { if (Context::getContext()->customer->id) { $cartdata = new Cart($order->id_cart); $total = (float) $cartdata->getOrderTotalGross(true, Cart::BOTH); $this->context->smarty->assign(array( 'reference' => $order->reference, 'total' => $total, 'HOOK_PAYMENT' => Hook::exec('displayPayment') )); $this->setTemplate('order-payment-classic.tpl'); } } else { if (Context::getContext()->customer->id) { $b = new PaymentOptionsFinder(); $data = $b->present(); $cartdata = new Cart($order->id_cart); $total = (float) $cartdata->getOrderTotalGross(true, Cart::BOTH); $id_defaultgroup = Db::getInstance()->executeS('SELECT id_default_group FROM ' . _DB_PREFIX_ . 'customer WHERE id_customer = ' . (int) Context::getContext()->customer->id); if(is_array($id_defaultgroup)) { $id_defaultgroup = $id_defaultgroup[0]['id_default_group']; } $sql = 'SELECT price FROM `' . _DB_PREFIX_ . 'installmentpayment_group` WHERE id_group=' . (int) $id_defaultgroup; $dataprice = Db::getInstance()->getRow($sql); if(!empty($data)){ $acompte = (float) $total - ($total * (100 - $dataprice['price']) / 100); $percent = $dataprice['price']; } else { $acompte = (float) $total - ($total * (100 - Configuration::get('ACOMPTE_PERCENTAGE')) / 100); $percent = Configuration::get('ACOMPTE_PERCENTAGE'); } $presentedCart = $this->cart_presenter->present($this->context->cart); $this->context->smarty->assign(array( 'reference' => $order->reference, 'payment_options' => $data, 'cart' => $presentedCart, 'selected_payment_option' => 1, 'show_final_summary' => Configuration::get('PS_FINAL_SUMMARY_ENABLED'), 'installmentpayment_type' => (int) Context::getContext()->cookie->installmentpayment_type, 'percent' => $percent, 'acompte_chose' => Configuration::get('ACOMPTE_CHOICE'), 'acompte' => $acompte, )); $this->setTemplate('module:installmentpayment/views/templates/front/checkout.tpl'); } } } public function setMedia() { parent::setMedia(); $this->addCSS( _THEME_CSS_DIR_ . 'modules/stripe_official/views/css/front.css'); } }