✏️ 正在编辑: Campanha.php
路径:
/srv/systems_dir/yuppiecred/application/models/DbTable/Campanha.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php class Model_DbTable_Campanha extends Core_DbTable { protected $_primary = 'id'; protected $_name = 'tb_campanhas'; protected static $_viewName = 'vw_campanhas'; public static function getViewName() { return self::$_viewName; } public function insert(array $data) { $data = $this->_formataValor($data); return parent::insert($data); } public function update(array $data, $where, $registerLog = true) { $data = $this->_formataValor($data); return parent::update($data, $where); } protected function _formataValor($data) { if( isset($data['valor_ponto']) ){ $data['valor_ponto'] = str_replace(array( '.', ',' ), array( '', '.' ), $data['valor_ponto']); } if( isset($data['producao_media']) ){ $data['producao_media'] = str_replace(array( '.', ',' ), array( '', '.' ), $data['producao_media']); } return $data; } public function getPontuacao($campanhaId, $corretorId) { $params = array( "clientes.excluido <> 1 AND contratos.excluido<>1 AND contratos.tipo_registro = 1 AND tabelas.excluido <> 1 AND tabelas.campanha = 1" ); $where = null; if( $campanhaId <= 0 ){ return 0; } if( $corretorId > 0 ){ $params[] = "corretor_id = " . $corretorId; } $campanha = new Model_Campanha(); $dadosCampanha = $campanha->exibir($campanhaId); $params[] = "( data_liberacao >= '" . $dadosCampanha['data_inicial'] . "'" . " AND data_liberacao <= '" . $dadosCampanha['data_final'] . "' )"; //bloqueado apenas para a campanha 3/4 ID = 9 if( $campanhaId == 9 ){ //contratos recebidos OU enviados $params[] = "((contratos.data_recebimento_fisico IS NOT NULL AND contratos.data_recebimento_fisico <> '0000-00-00')" . " OR (contratos.data_envio_fisico IS NOT NULL AND contratos.data_envio_fisico <> '0000-00-00'))"; //20 dias pela emissao $dbTableContrato = new Model_DbTable_Contrato(); $producaoPeriodo = count($dbTableContrato->fetchAll('DATE_ADD(data_emissao, INTERVAL 20 DAY) >= NOW()')); $params[] = "({$producaoPeriodo} > 0)"; } if( count($params) > 0 ) $where = implode(" AND ", $params); $dbtable = new Model_DbTable_Contrato(); $select = $dbtable->getAdapter()->select()->from(array( "contratos" => "tb_contratos" ), array( 'total_contratos' => 'SUM(valor_liquido)' )) ->joinInner(array( 'clientes' => "tb_clientes" ), 'contratos.cliente_id = clientes.id', array( )) ->joinInner(array( "tabelas" => "tb_tabelas" ), "contratos.tabela_id = tabelas.id", array( )); $select->where($where); $select->group(array( 'corretor_id' )); $dados = $dbtable->getAdapter()->fetchRow($select); if ($dados != null && $dados['total_contratos'] > 0 && $dadosCampanha['valor_ponto']) { return ($dados['total_contratos'] / $dadosCampanha['valor_ponto']); } return 0; } public function getPontuacaoGeral($dados) { $campanhaId = $dados['campanha_id']; $corretorId = $dados['corretor_id']; $dbtable = new Model_DbTable_Contrato(); $campanhaModel = new Model_Campanha(); $campanha = $campanhaModel->exibir($campanhaId)->toArray(); $semProducao = $campanha['periodo_sem_producao']; $valorPonto = $campanha['valor_ponto']; $tbContratos = array( "contratos" => "tb_contratos" ); $tbClientes = array( 'clientes' => "tb_clientes" ); $selectTabelas = $this->selectTabelasCampanha($campanhaId); $selectConvenios = $this->selectConveniosCampanha($campanhaId); $whereFisico = $this->getWhereFisico(); if ($semProducao > 0) { $ultimaProducao = $dbtable->select() ->from($tbContratos, array('emissao' => "MAX(DATE_ADD(data_emissao, INTERVAL $semProducao DAY))")) ->where('contratos.corretor_id', $corretorId); $dadosUltimaProducao = $dbtable->getAdapter()->fetchRow($ultimaProducao); if (!$dadosUltimaProducao['emissao'] > Zend_Date::now()) return 0; } if (array_key_exists('data_inicial', $dados) && array_key_exists('data_final', $dados)) { $dataInicial = new Zend_Date($dados['data_inicial']); $dataFinal = new Zend_Date($dados['data_final']); $campanha['data_inicial'] = $dataInicial->get('yyyy-MM-dd'); $campanha['data_final'] = $dataFinal->get('yyyy-MM-dd'); } $select = $dbtable->getAdapter()->select() ->from($tbContratos, array('pontos' => "SUM(valor_liquido)" )) ->joinInner($tbClientes, 'contratos.cliente_id = clientes.id', array()) ->joinLeft(array('tabelas' => $selectTabelas), "contratos.tabela_id = tabelas.id", array()) ->joinLeft(array('convenios' => $selectConvenios), "contratos.convenio_id = convenios.id", array()) ->where('data_liberacao >= ?', $campanha['data_inicial']) ->where('data_liberacao <= ?', $campanha['data_final']) ->where('contratos.corretor_id = ?', $corretorId) ->where('clientes.excluido <> 1') ->where('contratos.excluido <> 1') ->where('contratos.tipo_registro = 1') ->where($whereFisico); $idsStatus = $campanhaModel->getIdsStatus($campanha['id']); if (count($idsStatus) > 0) { $select->where('contratos.status_proposta IN (?)', $idsStatus); } $dados = $dbtable->getAdapter()->fetchRow($select); $pontos = $dados['pontos'] / $valorPonto; return number_format($pontos, 2, '.', ''); } public function getById($id) { $dbtable = new Model_DbTable_Campanha(); $select = $dbtable->getAdapter()->select()->from('tb_campanhas') ->where('id = ?', $id); return $dbtable->getAdapter()->fetchRow($select); } public function selectConveniosCampanha($campanhaId) { $dbTable = new Model_DbTable_CampanhaConvenio(); return $dbTable->getAdapter()->select() ->from('tb_campanhas_convenios', 'id') ->join('tb_convenios', 'tb_convenios.id = tb_campanhas_convenios.convenio_id', '') ->where('tb_convenios.excluido <> 1') ->where('campanha_id = ?', $campanhaId); } public function selectTabelasCampanha($campanhaId) { $dbTable = new Model_DbTable_CampanhaTabela(); return $dbTable->getAdapter()->select() ->from('tb_campanhas_tabelas', 'id') ->join('tb_tabelas', 'tb_tabelas.id = tb_campanhas_tabelas.tabela_id', '') ->where('tb_tabelas.excluido <> 1') ->where('campanha_id = ?', $campanhaId); } public function getWhereFisico() { return <<<acp ((contratos.data_recebimento_fisico IS NOT NULL AND contratos.data_recebimento_fisico <> '0000-00-00') OR (contratos.data_envio_fisico IS NOT NULL AND contratos.data_envio_fisico <> '0000-00-00')) acp; } }
💾 保存文件
← 返回文件管理器