klarna_fee.php (1863B)
1 <?php 2 class ModelExtensionTotalKlarnaFee extends Model { 3 public function getTotal($totals) { 4 extract($totals); 5 6 $this->load->language('extension/total/klarna_fee'); 7 8 $status = true; 9 10 $klarna_fee = $this->config->get('klarna_fee'); 11 12 if (isset($this->session->data['payment_address_id'])) { 13 $this->load->model('account/address'); 14 15 $address = $this->model_account_address->getAddress($this->session->data['payment_address_id']); 16 } elseif (isset($this->session->data['guest']['payment'])) { 17 $address = $this->session->data['guest']['payment']; 18 } 19 20 if (!isset($address)) { 21 $status = false; 22 } elseif (!isset($this->session->data['payment_method']['code']) || $this->session->data['payment_method']['code'] != 'klarna_invoice') { 23 $status = false; 24 } elseif (!isset($klarna_fee[$address['iso_code_3']])) { 25 $status = false; 26 } elseif (!$klarna_fee[$address['iso_code_3']]['status']) { 27 $status = false; 28 } elseif ($this->cart->getSubTotal() >= $klarna_fee[$address['iso_code_3']]['total']) { 29 $status = false; 30 } 31 32 if ($status) { 33 $total['totals'][] = array( 34 'code' => 'klarna_fee', 35 'title' => $this->language->get('text_klarna_fee'), 36 'value' => $klarna_fee[$address['iso_code_3']]['fee'], 37 'sort_order' => $klarna_fee[$address['iso_code_3']]['sort_order'] 38 ); 39 40 $tax_rates = $this->tax->getRates($klarna_fee[$address['iso_code_3']]['fee'], $klarna_fee[$address['iso_code_3']]['tax_class_id']); 41 42 foreach ($tax_rates as $tax_rate) { 43 if (!isset($total['taxes'][$tax_rate['tax_rate_id']])) { 44 $total['taxes'][$tax_rate['tax_rate_id']] = $tax_rate['amount']; 45 } else { 46 $total['taxes'][$tax_rate['tax_rate_id']] += $tax_rate['amount']; 47 } 48 } 49 50 $total['total'] += $klarna_fee[$address['iso_code_3']]['fee']; 51 } 52 } 53 }