<?php
class ModelTotaldescontoporpagamento extends Model {

	public function getTotal(&$total_data, &$total) {

	  if(isset($this->session->data['payment_method'])){

	    $paymentmethod = $this->session->data['payment_method'];

		$descontos = array();
		$descontos = $this->config->get('desconto_tipo_pagamento');
		$valor  = 0;
		$cliente_TabelaPreco = $this->customer->getCustomerGroupId();

		foreach ($descontos as $desconto) {
			$tabelaDesconto = false;

			$valorMinimo = $desconto['valor_minimo'] ?? 0;

			if ( ($desconto['pagamento_desconto'] == $paymentmethod['code']) && ($desconto['status_desconto']) && ($this->cart->getTotal() > $valorMinimo)){

			    foreach ($desconto['tabela_preco'] as $tabelaPreco){
					if (($tabelaPreco == 0) || ($tabelaPreco == $cliente_TabelaPreco)){
						$tabelaDesconto = true;
					}
				}

				if ($tabelaDesconto && ( !isset($prioridadeAnterior) || ($desconto['prioridade_desconto'] <= $prioridadeAnterior) )) {
                    $prioridadeAnterior = $desconto['prioridade_desconto'];
                    $valor = $desconto['val_desconto'];


                    if (isset($desconto['text_desconto']) && trim($desconto['text_desconto']) <> '') {
                        $titulo = $desconto['text_desconto'];
                    } else {
                        $titulo = 'Desconto Pagamento(' . $valor . '%)';
                    }

                    $modoDesconto = $desconto['modo_desconto'];

                }
			}
		}
		//$valor = $this->config->get('descontopagamento_' . $paymentmethod['code']);

		if(($valor) && ($valor > 0) && ($valor != '')){
		   //$percent = $valor;

		   if ($modoDesconto){
		       $valor = ($valor/100) * $this->DescSobDesc();
		   }else{
		       $valor = ($valor/100) * $this->cart->getSubTotal();
		   }

			$total_data[] = array(
				'code'       => 'descontoporpagamento',
				'title'      => $titulo,
				'text'       => $this->currency->format(-$valor),
				'value'      => -$valor,
				'sort_order' => $this->config->get('descontoporpagamento_sort_order')
			);

			$total -= $valor;
		}

	  }

	}

	public function DescSobDesc() {

	    $total_data = array();
	    $total = 0;

	    $this->load->model('setting/extension');

	    $sort_order = array();

	    $results = $this->model_setting_extension->getExtensions('total');

	    foreach ($results as $key => $value) {
	        $sort_order[$key] = $this->config->get($value['code'] . '_sort_order');
	    }

	    array_multisort($sort_order, SORT_ASC, $results);

	    foreach ($results as $result) {
	        if ($this->config->get($result['code'] . '_status') && ($result['code']!='descontoporpagamento' && $result['code']!='shipping')) {
	            $this->load->model('total/' . $result['code']);
	            $this->{'model_total_' . $result['code']}->getTotal($total_data, $total);
	        }
	    }

	    foreach ($total_data as $totalDes) {
	       if($totalDes['code']=='total'){
	           return  $totalDes['value'];
	       }
	    }

	}
}
