<?php

class Produto_CondicaopagamentoitensController extends Agro_Controller_Action {
	
	public function getModel() {
		return new Produto_Model_CondicoesPagamentoItens();
	}
	
	public function getForm() {
		$model = new Produto_Model_CondicoesPagamento();
		$params = $this->getRequest()->getParams();
		$idCondicao = $params['id_condicao'];
		$row = $model->getRow($idCondicao);

		if($row['fl_selecao_data']){
			return new Produto_Form_CondicaoPagamentoItemParcelaUnica();
		}
		return new Produto_Form_CondicaoPagamentoItem();
	}
	
	public function formAction()
    {
        $this->getHelper('layout')->disableLayout();

        // Instancia os models
        $condicoesPagamento = new Produto_Model_CondicoesPagamento();
        $model = new Produto_Model_CondicoesPagamentoItens();

        // Busca os valores do item e da condicao de pagamento
        $condicaoPagamentoItem = $model->getRow($this->getRequest()->getParam('id'));
        $condicaoPagamento = $condicoesPagamento->getRow($this->getRequest()->getParam('id_condicao'));

        // Adiciona os valores na view
        $this->view->percentual_flexivel = $condicaoPagamento->fl_percentual_flexivel;
        $this->view->inadimplentes = $condicaoPagamento->fl_inadimplentes;
        $this->view->data_flexivel = $condicaoPagamento->fl_data_flexivel;

        // Adiciona o form na view
        $this->view->form = $this->getForm();
        $this->view->form->populate($condicaoPagamentoItem->toArray());

        if ($this->getRequest()->getParam('id_condicao')) {
            $idCondicao = !Agro_Util::filterVariable($this->getRequest()->getParam('id_condicao'))
                ? null
                : (int)$this->getRequest()->getParam('id_condicao');
            $this->view->form->id_condicao_pagamento->setValue($idCondicao);
        }

        $this->view->list = array();
        if ($condicaoPagamentoItem->id) {
            $itensOpcoes = new Produto_Model_CondicoesPagamentoItensOpcoes();
            $itens = $itensOpcoes->getItensOpcoes($condicaoPagamentoItem->id);

            foreach ($itens as $it) {
                $this->view->list[$it['nr_parcela']]['id_condicao_pagamento_item'] = $it['id_condicao_pagamento_item'];
                $this->view->list[$it['nr_parcela']]['nr_parcela'] = $it['nr_parcela'];
                $this->view->list[$it['nr_parcela']]['dt_vencimento_parcela'] = $it['dt_vencimento_parcela'];
                $this->view->list[$it['nr_parcela']]['vl_percentual_parcela'] = $it['vl_percentual_parcela'];
            }
        }
    }
	
	public function deleteAction() {
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();
		
		$ModelOpcoes = new Produto_Model_CondicoesPagamentoItensOpcoes();
		$Model = $this->getModel();
		$result = array();
		
		try {
			$result['execute'] = '$.listCondicoesPagamento();';
			
			if($ModelOpcoes->delete($this->getRequest()->getParam('id'))){
    			if ($Model->delete($this->getRequest()->getParam('id'))) {
    				$result['message'] = MSG_SUCCESS;
    				$result['status'] = true;
    			} else {
    				$result['message'] = MSG_ERROR;
    				$result['status'] = false;
    			}
			} else {
				$result['message'] = MSG_ERROR;
				$result['status'] = false;
			}
    			
		} catch (Exception $e) {
			$result['message'] = $this->view->escape(MSG_DELETE_FK_ERROR);
			$result['status'] = false;
		}
		
		$this->getResponse()->setBody(Zend_Json::encode($result));
	}
	
	public function saveAction() {
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();
		$Model = $this->getModel();
		$result = array('execute' => "$.listCondicoesPagamento();", 'status' => true);
		
		if (!$this->getRequest()->getParam('ds_ano')) {
			$result['message'] = 'Informe um ano.';
			$result['status'] = false;
		}
		
		if ($Model->checkCondicao($this->getRequest()->getParams())) {
			$result['message'] = 'Esta condição não pode ser salva, pois já existe uma configuração com esse mês para este ano.';
			$result['status'] = false;
		}
		
		if ($result['status']) {
			$result['status'] = $Model->save($this->getRequest()->getParams());
		}
		
		$this->getResponse()->setBody(Zend_Json::encode($result));
	}
}