✏️ 正在编辑: Comissionamento.php
路径:
/srv/systems_dir/yuppiecred/application/models/Comissionamento.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php class Model_Comissionamento extends Model_Abstract_Comissionamento { private $_empresaId; public function getEmpresaId() { return $this->_empresaId; } public function setEmpresaId($empresaId) { $this->_empresaId = $empresaId; } /** * Retorna uma lista * @param string $where * @param string $order * @param int $count * @param int $offset * @return array */ public function listar($fields, $order = 'produto ASC') { $params = array(); $where = null; if( isset($fields['empresa_id']) && !empty($fields['empresa_id']) ){ $params[] = "empresa_id = " . $fields['empresa_id']; } if( isset($fields['grupo_comissao']) && !empty($fields['grupo_comissao']) ){ $params[] = "grupo_comissao = " . $fields['grupo_comissao']; } if( isset($fields['produto']) && !empty($fields['produto']) ){ $params[] = "produto = '" . $fields['produto'] . "'"; } if( isset($fields['tipo_produto']) && !empty($fields['tipo_produto']) ){ $params[] = "tipo_produto = '" . $fields['tipo_produto'] . "'"; } if( isset($fields['data_validade']) && !empty($fields['data_validade']) ){ $params[] = "data_validade = STR_TO_DATE('" . $fields['data_validade'] . "', '%d/%m/%Y')"; } if( isset($fields['tabela_id']) && !empty($fields['tabela_id']) ){ $params[] = "tabela_id = " . $fields['tabela_id']; } if( isset($fields['convenio_id']) && !empty($fields['convenio_id']) ){ $params[] = "convenio_id = " . $fields['convenio_id']; } if( isset($fields['banco_id']) && !empty($fields['banco_id']) ){ $params[] = "banco_id = " . $fields['banco_id']; } if( isset($fields['prazo']) && !empty($fields['prazo']) ){ $params[] = "prazo = '" . $fields['prazo'] . "'"; } if( count($params) > 0 ) $where = implode(" AND ", $params); $dbtable = new Model_DbTable_Comissionamento(); return $dbtable->fetchAll($where, $order); } /** * Verifica se a comissão existe * @param int $bancoId * @param int $produtoId * @param int $prazo * @return boolean */ public function existeComissao($bancoId, $convenioId, $tabelaId, $tipoProduto, $prazoDe, $prazoA, $baseComissao, $taxaDe, $taxaA) { $dbtable = new Model_DbTable_Comissionamento(); $where = "tipo_produto = '" . $tipoProduto . "'" . " AND banco_id = " . $bancoId . " AND convenio_id = " . $convenioId . " AND tabela_id = " . $tabelaId . " AND base_comissao_empresa = '" . $baseComissao . "'" . " AND ((prazo_a >= '{$prazoDe}' AND prazo_de <= '{$prazoDe}') OR " . "(prazo_a >= '{$prazoA}' AND prazo_de <= '{$prazoA}'))" . " AND ((taxa_contrato_a >= '{$taxaDe}' AND taxa_contrato_de <= '{$taxaDe}') OR " . "(taxa_contrato_a >= '{$taxaA}' AND taxa_contrato_de <= '{$taxaA}'))"; $result = $dbtable->fetchRow($where); if( $result != null ){ return $result; } return false; } public function listarPercValido($fields, $order, $apenasVigentes = true, $group = 'comissionamento.id', $page = null) { if (count($fields) <= 0) { throw new Core_Exception('Atenção! Você deve informar pelo menos uma opção de busca.'); } $params = array("comissionamento.excluido <> 1"); $where = null; if (!empty($fields['prazo'])) { $params[] = "comissionamento.prazo_de <= " . $fields['prazo']; $params[] = "comissionamento.prazo_a >= " . $fields['prazo']; } if (!empty($fields['tipo_contrato'])) { if (is_array($fields['tipo_contrato'])) { $tipos = implode("', '", $fields['tipo_contrato']); $params[] = "comissionamento.tipo_produto IN ( '" . $tipos . "' )"; } else { $params[] = "comissionamento.tipo_produto = {$fields['tipo_contrato']}"; } } if (!empty($fields['especie'])) { $params[] = "comissionamento.especie = " . $fields['especie']; } if (!empty($fields['base_comissao'])) { $params[] = "perc.base_comissao_valor = '" . $fields['base_comissao'] . "'"; } if (!empty($fields['empresa_id'])) { $params[] = "comissionamento.empresa_id = " . $fields['empresa_id']; } if (!empty($fields['grupo_comissao'])) { $params[] = "grupo_comissao = " . $fields['grupo_comissao']; } if (!empty($fields['produto'])) { $params[] = "comissionamento.produto = '" . $fields['produto'] . "'"; } if (!empty($fields['tipo_produto'])) { $params[] = "comissionamento.tipo_produto = '" . $fields['tipo_produto'] . "'"; } if (!empty($fields['base_comissao_empresa'])) { $params[] = "comissionamento.base_comissao_empresa = '" . $fields['base_comissao_empresa'] . "'"; } if (!empty($fields['data_validade'])) { $params[] = "data_validade = STR_TO_DATE('" . $fields['data_validade'] . "', '%d/%m/%Y')"; } if (!empty($fields['tabela_id'])) { $params[] = "comissionamento.tabela_id = " . $fields['tabela_id']; } if (!empty($fields['convenio_id'])) { $params[] = "comissionamento.convenio_id = " . $fields['convenio_id']; } if (!empty($fields['banco_id'])) { $params[] = "comissionamento.banco_id = " . $fields['banco_id']; } if (!empty($fields['prazo_de'])) { $params[] = "comissionamento.prazo_de >= '" . $fields['prazo_de'] . "'"; } if (!empty($fields['prazo_a'])) { $params[] = "comissionamento.prazo_a <= '" . $fields['prazo_a'] . "'"; } if( !empty($fields['data_final_de']) ){ $params[] = "perc.data_final >= STR_TO_DATE('" . $fields['data_final_de'] . "', '%d/%m/%Y')"; $apenasVigentes = false; } if( !empty($fields['data_final_a']) ){ $params[] = "perc.data_final <= STR_TO_DATE('" . $fields['data_final_a'] . "', '%d/%m/%Y')"; $apenasVigentes = false; } if (!empty($fields['comissao_ativa'])) { if ($fields['comissao_ativa'] == 1) { $params[] = "perc.id is not null"; $params[] = "comissionamento.desativado<>1"; } elseif ($fields['comissao_ativa'] == 2) { $params[] = "(perc.id IS NULL OR comissionamento.desativado = 1)"; } } if (count($params) > 0) { $where = implode(" AND ", $params); $dbtable = new Model_DbTable_Comissionamento(); $perc = $dbtable->getAdapter()->select() ->from(array( 'percentual' => 'tb_comissionamento_percentual' )) ->where("percentual.excluido <> 1") ->order('percentual.id DESC'); if ($apenasVigentes) { $perc->where("percentual.data_final IS NULL OR data_final = '0000-00-00'"); } $percColumns = [ 'perc_id' => 'id', 'perc_comissao' => 'comissao', 'perc_comissao_adiantamento' => 'adiantamento', 'perc_comissao_diferimento' => 'diferimento', 'perc_comissao_bonus' => 'bonus', 'data_cadastro', 'usuario_cadastro', 'base_comissao_valor', 'base_comissao_adiantamento', 'base_comissao_diferimento', 'base_comissao_bonus', 'perc_data_inicial' => 'data_inicial', 'data_inicial', 'perc_data_final' => 'data_final', 'perc_data_base' => 'data_base']; $select = $dbtable->getAdapter()->select() ->from(array( 'comissionamento' => 'tb_comissionamento' )) ->joinLeft(array( 'perc' => $perc ), 'perc.comissionamento_id = comissionamento.id', $percColumns) ->joinInner(array( 'bancos' => 'tb_bancos' ), 'bancos.id = comissionamento.banco_id', array( 'banco_id' => 'id', 'banco_nome' => 'nome', 'imposto' )) ->joinLeft(array( 'spread_bancos' => 'tb_bancos_spread_faixa_comissao' ), 'spread_bancos.banco_id = bancos.id AND valor_inicial <= perc.comissao AND valor_final >= perc.comissao', ['spread_faixa' => 'spread']) ->joinLeft(array( 'tabelas' => 'tb_tabelas' ), 'tabelas.id = comissionamento.tabela_id', array( 'tabela_nome' => 'nome', 'codigo_tabela' => 'codigo', 'tabela_info_adicional' => 'informacao_adicional', 'tipo_formalizacao' )) ->joinLeft(array( 'convenios' => 'tb_convenios' ), 'convenios.id = comissionamento.convenio_id', array( 'convenio_nome' => 'nome' )) ->where($where) ->group($group); if (in_array(Yuppie_Auth::getIdentity()->grupo, ['Corretor', 'Supervisor', 'Gerente'])) { $select->where('bancos.desativar_comissoes <> 1'); } if ($page) { $paginator = Zend_Paginator::factory($select); $paginator->setCurrentPageNumber($page); $paginator->setItemCountPerPage(100); return $paginator; } return $dbtable->getAdapter()->fetchAll($select); } } public function getComissaoRecebimento($contratoId) { $dbtable = new Model_DbTable_Contrato(); $selectComissaoPrevista = $dbtable->getAdapter()->select()->from(array( 'c' => 'tb_comissionamento' ), array( 'banco_id', 'empresa_id', 'tabela_id', 'convenio_id', 'produto', 'prazo' )) ->joinInner(array( 'p' => 'tb_comissionamento_percentual' ), 'c.id = p.comissionamento_id', array( 'comissao', 'bonus', 'diferimento', 'adiantamento', 'data_inicial', 'data_final' )) ->where('c.excluido<>1') ->where('p.excluido<>1') ->order("p.id DESC"); $select = $dbtable->getAdapter()->select()->from(array( 'contratos' => 'tb_contratos' ), array()) ->joinInner(array( 'comissoes' => $selectComissaoPrevista ), "comissoes.convenio_id = contratos.convenio_id AND comissoes.tabela_id = contratos.tabela_id AND " . "contratos.produto = comissoes.produto AND contratos.prazo = comissoes.prazo AND " . "contratos.data_emissao >= comissoes.data_inicial AND (contratos.data_emissao <= comissoes.data_final OR comissoes.data_final IS NULL)", array( 'comissao_prevista' => 'comissao', 'bonus_previsto' => 'bonus', 'diferimento_previsto' => 'diferimento', 'adiantamento_previsto' => 'adiantamento' )) ->where("contratos.id = " . $contratoId) ->where("contratos.excluido<>1"); return $dbtable->getAdapter()->fetchRow($select); } public function exportarComissoes($comissoes) { $dadosCsv = array(); $dadosCsv[] = implode(";", array( 'Convênio', 'Tabela', 'Código Tabela', 'Código Produto', 'Descrição Produto', 'Tipo', 'Base Comissão Valor', 'Base Comissão Bônus', 'Base Comissão Adiantamento', 'Base Comissão Diferimento', 'Prazo De', 'Prazo A', 'Valor Fixo', 'Valor De', 'Valor A', 'Validar faixa por', 'Comissão (%)', 'Bônus (%)', 'Adiantamento (%)', 'Diferimento (%)', 'Data Inicial', 'Data Base (E/L)', 'Banco', 'Corretor', 'Grupo Comissão', 'Taxa Contrato Inicial (%)', 'Taxa Contrato Final (%)', 'Idade Inicial', 'Idade Final', 'Incidir sobre', 'Espécie', 'Data Final', 'ID Comissão', )); foreach( $comissoes as $comissao ){ $dadosCsv[] = implode(";", [ $comissao['convenio_nome'], $comissao['tabela_nome'], $comissao['codigo_tabela'], '', '', $comissao['tipo_produto'], $comissao['base_comissao_valor'], $comissao['base_comissao_bonus'], $comissao['base_comissao_adiantamento'], $comissao['base_comissao_diferimento'], $comissao['prazo_de'], $comissao['prazo_a'], number_format($comissao['valor_fixo'], 2, ',', '.'), number_format($comissao['valor_de'], 2, ',', '.'), number_format($comissao['valor_a'], 2, ',', '.'), $comissao['validar_faixa'], number_format($comissao['perc_comissao'], 2, ',', '.'), number_format($comissao['perc_comissao_bonus'], 2, ',', '.'), number_format($comissao['perc_comissao_adiantamento'], 2, ',', '.'), number_format($comissao['perc_comissao_diferimento'], 2, ',', '.'), $comissao['perc_data_inicial'], $comissao['perc_data_base'], $comissao['banco_nome'], $comissao['corretor_id'] ?? '', $comissao['grupo_nome'] ?? '', number_format($comissao['taxa_contrato_de'], 2, ',', '.'), number_format($comissao['taxa_contrato_a'], 2, ',', '.'), $comissao['idade_inicial'], $comissao['idade_final'], !empty($comissao['incidir_sobre']) ? 'Empresa' : 'Contrato', !empty($comissao['especie']) ? $comissao['especie'] : '', $comissao['perc_data_final'], $comissao['id'], ]); } $exportCsv = mb_convert_encoding(implode("\n", $dadosCsv), 'ISO-8859-1', 'UTF-8'); $name = "YUPPIE_COMISSAO_PREVISTA_" . time() . ".csv"; $fileName = getcwd() . "/downloads/" . $name; $fp = fopen($fileName, "w+"); fwrite($fp, $exportCsv); fclose($fp); return $name; } }
💾 保存文件
← 返回文件管理器