<?php

class Produto_Model_CondicoesPagamentoItens extends Agro_Db_Table_Abstract {
	protected $_schema = 'produto';
	protected $_name = 'condicoes_pagamento_itens';
	protected $_primary = 'id';

	public function save(array $values) {

		$Row = $this->getRow($values['id']);

		try {
			$Row->id_condicao_pagamento = $values['id_condicao_pagamento'];
			$Row->nr_parcelas = $values['nr_parcelas'];
			$Row->ds_ano = $values['ds_ano'];
			$Row->ds_mes = $values['ds_mes'];
			$Row->fl_considerar_data_informada_primeira_parcela = !empty($values['fl_considerar_data_informada_primeira_parcela'])
				? 1
				: 0;
			$Row->nr_quantidade_dias = $values['nr_quantidade_dias'] ? $values['nr_quantidade_dias'] : 0;
			
			if ($Row->save()) {
				if (is_array($values['nr_opcao_item']) && count($values['nr_opcao_item'])) {

					$ItensOpcoes = new Produto_Model_CondicoesPagamentoItensOpcoes();
					$ItensOpcoes->delete($Row->id);

					foreach ($values['nr_opcao_item'] as $index) {
						$data = array(
							'vl_percentual_parcela' => $values['percentual_parcela'][$index],
							'dt_vencimento_parcela' => Agro_Util::formatDate($values['data_parcela'][$index], Zend_Date::W3C),
							'id_condicao_pagamento_item' => $Row->id,
							'nr_parcela' => $index,
						);
						$ItensOpcoes->save($data);
					}
				}
			}
			
			return $Row->id;
		} catch (Exception $e) {
		    die($e);
			return false;
		}

		return false;
	}

	public function geraPadrao($idCondicaoPagamento) {
		$values = array();
		$values['id_condicao_pagamento'] = $idCondicaoPagamento;
		$values['ds_dia_preferencial'] = 5;
		$values['nr_parcelas'] = 1;
		$values['ds_ano'] = date('Y');
		$values['ds_mes'] = date('m');

		return $this->save($values);
	}

	public function checkCondicao($data) {
		if (array_key_exists('fk_condicao_pagamento', $data)) {
			if ($data['fk_condicao_pagamento']) {
				$select = $this->select();
				$select->where("id_condicao_pagamento = ?", $data['fk_condicao_pagamento']);
				$select->where("ds_mes = ?", $data['ds_mes']);
				$select->where("ds_ano = ?", $data['ds_ano']);
				if($data['id_parcelamento']) {
					$select->where("id  != ?", $data['id_parcelamento']);
				}

				return $this->fetchAll($select)->count();
			}
		}

		return false;
	}
}