<?php

class Produto_Model_Taxas extends Agro_Db_Table_Abstract {
	protected $_schema = 'comercializacao';
	protected $_name = 'taxas_agrupamento';
	protected $_primary = 'id';

	public function copiar($idOldProduto, $idNewProduto) {
		$Rs = $this->fetchAll("id_produto = $idOldProduto");
		$ano = date('Y');

		if ($Rs->count()) {
			foreach ($Rs as $Old) {
				if ($Old) {
					$Old->ds_nome_agrupamento_taxas = str_replace($ano, $ano+1, $Old->ds_nome_agrupamento_taxas);
					$Old->ds_nome_agrupamento_taxas = str_replace($ano-1, $ano, $Old->ds_nome_agrupamento_taxas);

					$New = $this->createRow();
					$New->ds_nome_agrupamento_taxas = $Old->ds_nome_agrupamento_taxas;
				    $New->tp_taxa_agrupamento		= $Old->tp_taxa_agrupamento;
				    $New->vl_comissao 				= $Old->vl_comissao;
				    $New->id_secao 				    = $Old->id_secao;
				    $New->id_produto 				= $idNewProduto;

				    // copiar somente grupos de Estados e Municipios conforme solicitacao 03759
    				if($Old->tp_taxa_agrupamento == 'E' || $Old->tp_taxa_agrupamento == 'M') {
    				    if ($New->save()) {
    				    	$this->_copiarValores($Old, $New);
    
    						if ($Old->tp_taxa_agrupamento == 'E') {
    						    $this->_copiarEstado($Old, $New);
    						}
    						
    						if ($Old->tp_taxa_agrupamento == 'M') {
    						    $this->_copiarMunicipio($Old, $New);
    						}
    						
    						/*
    						if ($Old->tp_taxa_agrupamento == 'P'){
    						    $this->_copiarProponente($Old, $New);
    						    $this->_copiarMunicipio($Old, $New);
    						    $this->_copiarUsuarios($Old, $New);
    				        }
    				        
    						if ($Old->tp_taxa_agrupamento == 'U'){
    						    $this->_copiarUsuarios($Old, $New);
    						    $this->_copiarMunicipio($Old, $New);
    						}
    						*/
    				    }
				    }
				}
			}
		}

		return true;
	}

	private function _copiarValores($Old, $New) {
		$Valores = $this->getDefaultAdapter()->fetchAll("SELECT * FROM comercializacao.taxas_valores WHERE id_taxa_agrupamento = {$Old->id}");

		$TaxasValores = new Comercializacao_Model_TaxasValores();

		if (count($Valores)) {
		    //insere valores de taxas por franquia/cobertura
			foreach ($Valores as $Valor) {

				$id = $TaxasValores->save(array(
					'id_taxa_agrupamento' => $New->id,
					'id_cobertura' => $Valor['id_cobertura'],
					'vl_franquia' => $Valor['vl_franquia'],
					'vl_taxa' => $Valor['vl_taxa'],
					'vl_produtividade_estimada' => $Valor['vl_produtividade_estimada'],
					'vl_taxa_renovacao' => $Valor['vl_taxa_renovacao'],
				    'vl_taxa_inadimplente' => $Valor['vl_taxa_inadimplente'],
					'vl_taxa_reduzida' => $Valor['vl_taxa_reduzida'],
					'fl_franquia_disponivel' => $Valor['fl_franquia_disponivel'],
				    'fl_ativo' => true,
				));
				$arTaxa[$Valor['id']] = $id;
			}

			//insere taxas relacionadas
			foreach ($Valores as $Valor) {
			    $ValoresRelacionar = $this->getDefaultAdapter()->fetchAll("SELECT * FROM comercializacao.taxas_relacionadas WHERE id_taxa_relacionada = ".$Valor['id']);
                if(count($ValoresRelacionar)){
				    foreach($ValoresRelacionar as $Relacionar){
				        $id_taxa             = $arTaxa[$Relacionar['id_taxa']];
				        $id_taxa_relacionada = $arTaxa[$Relacionar['id_taxa_relacionada']];
	                    $this->_db->query("insert into comercializacao.taxas_relacionadas (id_taxa, id_taxa_relacionada) values ($id_taxa, $id_taxa_relacionada)");
				    }
                }
			}
		}
	}

	private function _copiarEstado($Old, $New) {
		$Estados = $this->getDefaultAdapter()->fetchAll("SELECT * FROM comercializacao.taxas_agrupamento_estados WHERE id_taxa_agrupamento = {$Old->id}");

		if (count($Estados)) {
			foreach ($Estados as $Estado) {
				$this->getDefaultAdapter()->insert('comercializacao.taxas_agrupamento_estados', array(
					'id_estado' => $Estado['id_estado'],
					'id_taxa_agrupamento' => $New->id,
				    'fl_ativo' => true,
					'id_usuario_criacao' => Zend_Auth::getInstance()->getIdentity()->id
				));
			}
		}
	}

	private function _copiarMunicipio($Old, $New) {
		$Municipios = $this->getDefaultAdapter()->fetchAll("SELECT * FROM comercializacao.taxas_agrupamento_municipios WHERE id_taxa_agrupamento = {$Old->id}");

		if (count($Municipios)) {
			foreach ($Municipios as $Municipio) {
				$this->getDefaultAdapter()->insert('comercializacao.taxas_agrupamento_municipios', array(
					'vl_produtividade_estimada' => $Municipio['vl_produtividade_estimada'],
					'id_municipio' => $Municipio['id_municipio'],
					'id_taxa_agrupamento' => $New->id,
				    
					'id_usuario_criacao' => Zend_Auth::getInstance()->getIdentity()->id
				));
			}
		}
	}

	private function _copiarProponente($Old, $New) {
		$Proponentes = $this->getDefaultAdapter()->fetchAll("SELECT * FROM comercializacao.taxas_agrupamento_proponentes WHERE id_taxa_agrupamento = {$Old->id}");

		if (count($Proponentes)) {
			foreach ($Proponentes as $Proponente) {
				$this->getDefaultAdapter()->insert('comercializacao.taxas_agrupamento_proponentes', array(
					'id_proponente' => $Proponente['id_proponente'],
					'id_taxa_agrupamento' => $New->id,
					'id_usuario_criacao' => Zend_Auth::getInstance()->getIdentity()->id
				));
			}
		}
	}

	private function _copiarUsuarios($Old, $New) {
		$Usuarios = $this->getDefaultAdapter()->fetchAll("SELECT * FROM comercializacao.taxas_agrupamento_usuarios WHERE id_taxa_agrupamento = {$Old->id}");

		if (count($Usuarios)) {
			foreach ($Usuarios as $Usuario) {
				$this->getDefaultAdapter()->insert('comercializacao.taxas_agrupamento_usuarios', array(
					'id_usuario' => $Usuario['id_usuario'],
					'id_taxa_agrupamento' => $New->id,
					'id_usuario_criacao' => Zend_Auth::getInstance()->getIdentity()->id
				));
			}
		}
	}
}