public function index()
{
$this->load->model('extension/payment/klarna_checkout');
// If Payment Method or Module is disabled
if (!$this->config->get('klarna_checkout_module_status') || !$this->config->get('klarna_checkout_status')) {
$this->model_extension_payment_klarna_checkout->log('Not shown due to Payment Method or Module being disabled');
return false;
}
// Validate cart has products and has stock.
if (!$this->cart->hasProducts() && empty($this->session->data['vouchers']) || !$this->cart->hasStock() && !$this->config->get('config_stock_checkout')) {
$this->model_extension_payment_klarna_checkout->log('Not shown due to empty cart');
return false;
}
// Validate minimum quantity requirements.
$products = $this->cart->getProducts();
foreach ($products as $product) {
$product_total = 0;
foreach ($products as $product_2) {
if ($product_2['product_id'] == $product['product_id']) {
$product_total += $product_2['quantity'];
}
}
if ($product['minimum'] > $product_total) {
$this->model_extension_payment_klarna_checkout->log('Not shown due to cart not meeting minimum quantity reqs.');
return false;
}
}
// Validate cart has recurring products
if ($this->cart->hasRecurringProducts()) {
$this->model_extension_payment_klarna_checkout->log('Not shown due to cart having recurring products.');
return false;
}
list($totals, $taxes, $total) = $this->model_extension_payment_klarna_checkout->getTotals();
if ($this->config->get('klarna_checkout_total') > 0 && $this->config->get('klarna_checkout_total') > $total) {
return false;
}
if ($this->model_extension_payment_klarna_checkout->checkForPaymentTaxes($products)) {
$this->model_extension_payment_klarna_checkout->log('Payment Address based taxes used.');
return false;
}
$this->setShipping();
list($klarna_account, $connector) = $this->model_extension_payment_klarna_checkout->getConnector($this->config->get('klarna_checkout_account'), $this->session->data['currency']);
if (!$klarna_account || !$connector) {
$this->model_extension_payment_klarna_checkout->log('Couldn\'t secure connection to Klarna API.');
return false;
}
$data['klarna_checkout'] = $this->url->link('extension/payment/klarna_checkout', '', true);
return $this->load->view('extension/module/klarna_checkout_module', $data);
}