<?php

class Sinistro2_Model_NotasFiscais extends Agro_Db_Table_Abstract {
    protected $_schema = 'sinistro';
    protected $_name = 'notas_fiscais';
    protected $_primary = 'id';

    public function save($dados) {  
        $Row = $dados['id'] == '' ? $this->createRow() : $this->getRow($dados['id']);
        $Row->id_processos_notas_fiscais = $dados['id_processos_notas_fiscais'];
        $Row->id_notas_fiscais_arquivos = $dados['id_notas_fiscais_arquivos'];
        $Row->id_cooperativa = $dados['id_cooperativa'];
        $Row->ds_nro_nota_fiscal = $dados['ds_nro_nota_fiscal'];
        $Row->vl_peso = $dados['vl_peso'];
        $Row->vl_percent_germinacao = $dados['vl_percent_germinacao'];
        $Row->vl_percent_desvalorizacao = $dados['vl_percent_desvalorizacao'];
        
        return $Row->save();
    }

    public function getPercentDesvalorizacao(array $coberturas, float $percentGerminacao) : float {
        $select = $this->select()
            ->setIntegrityCheck(false)
            ->from(array('pcgd' => 'sinistro.percent_cobertura_germinacao_desvalorizacao'), 'vl_percent_desvalorizacao')
            ->where('pcgd.id_cobertura in ('.implode(',', $coberturas).')')
            ->where('? between pcgd.vl_percent_germinacao_min and pcgd.vl_percent_germinacao_max', $percentGerminacao);

        return $this->_db->fetchOne($select);
    }

    public function getNotasFiscais(int $idProcessoNotasFiscais) : array {
        $select = $this->select()
            ->setIntegrityCheck(false)
            ->from(array('nf' => 'sinistro.notas_fiscais'), array('id as id_nota_fiscal', 'ds_nro_nota_fiscal', 'vl_peso', 'vl_percent_germinacao', 'vl_percent_desvalorizacao'))
            ->join(array('coop' => 'sistema.cooperativas'), 'nf.id_cooperativa = coop.id', array('ds_nome_cooperativa'))
            ->where('nf.id_processos_notas_fiscais = ?', $idProcessoNotasFiscais);

        return $this->fetchAll($select)->toArray();
    }
}