✏️ 正在编辑: DiarioRota.php
路径:
/srv/systems_dir/yuppiecred/application/models/DiarioRota.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php class Model_DiarioRota { private $_id; private $_supervisorId; private $_dataSaida; private $_dataRetorno; private $_status; private $_kmInicial; private $_kmFinal; public function __construct($options = null) { if (is_array($options)) { $this->setOptions($options); } } function getId() { return $this->_id; } function getSupervisorId() { return $this->_supervisorId; } function getDataSaida() { return $this->_dataSaida; } function getDataRetorno() { return $this->_dataRetorno; } function setId($id) { $this->_id = $id; } function setSupervisorId($supervisorId) { $this->_supervisorId = $supervisorId; } function setDataSaida($dataSaida) { if (!empty($dataSaida)) { try { $data = new Zend_Date($dataSaida, Zend_Date::DATES, 'pt'); $dataSaida = $data->toString('yyyy-MM-dd'); } catch (Zend_Date_Exception $e) { echo $e->getMessage(); $dataSaida = null; } } else { $dataSaida = null; } $this->_dataSaida = $dataSaida; } function setDataRetorno($dataRetorno) { if (!empty($dataRetorno)) { try { $data = new Zend_Date($dataRetorno, Zend_Date::DATES, 'pt'); $dataRetorno = $data->toString('yyyy-MM-dd'); } catch (Zend_Date_Exception $e) { echo $e->getMessage(); $dataRetorno = null; } } else { $dataRetorno = null; } $this->_dataRetorno = $dataRetorno; } function getStatus() { return $this->_status; } function setStatus($status) { $this->_status = $status; } public function getKmInicial() { return $this->_kmInicial; } public function getKmFinal() { return $this->_kmFinal; } public function setKmInicial($kmInicial) { $this->_kmInicial = $kmInicial; return $this; } public function setKmFinal($kmFinal) { $this->_kmFinal = $kmFinal; return $this; } public function setOptions(array $options) { $methods = get_class_methods($this); foreach ($options as $key => $value) { $explode = explode('_', $key); $methodName = ''; foreach ($explode as $v) { $methodName .= ucfirst($v); } $key = $methodName != '' ? $methodName : $key; $method = 'set' . ucfirst($key); if (in_array($method, $methods)) { $this->$method($value); } } return $this; } public function _toArray() { $dbtable = new Model_DbTable_DiarioRota(); $info = $dbtable->info(); $methods = get_class_methods($this); $data = array(); foreach ($info['cols'] as $key) { $col = $key; $explode = explode('_', $key); $methodName = ''; foreach ($explode as $v) { $methodName .= ucfirst($v); } $key = $methodName != '' ? $methodName : $key; $method = 'get' . ucfirst($key); if (in_array($method, $methods)) { $data[$col] = $this->$method(); } } return $data; } /** * Insere ou altera o registro passado por parâmetro * @param Model_DiarioRota $diarioRota */ public function salvar(Model_DiarioRota $diarioRota) { $dbtable = new Model_DbTable_DiarioRota(); $dbtableSupervidor = new Model_GerenteRota(); $supervidor = $dbtableSupervidor->exibir($diarioRota->getSupervisorId()); $dbtableLancamento = new Model_DbTable_Lancamento(); $data = $diarioRota->_toArray(); if( empty($data['km_inicial']) && $data['status'] == 'ABERTO' ){ throw new Exception("Só é permitido abrir a rota informando o campo Km inicial."); } elseif( (empty($data['km_final']) || $data['km_final'] <= 0) && $data['status'] == 'FECHADO' ){ throw new Exception("Só é permitido fechar a rota informando o campo Km final."); } if( $data['km_final'] < $data['km_inicial'] && $data['status'] == 'FECHADO' ){ throw new Exception("Km final menor que Km inicial."); } if ($diarioRota->getId() > 0) { $dbtable->update($diarioRota->_toArray(), 'id = ' . $diarioRota->getId()); return $diarioRota->getId(); } else { $dadosDiario = $diarioRota->_toArray(); $diarioId = $dbtable->insert($diarioRota->_toArray()); $dadosLancamento = array( 'diario_rota_id' => $diarioId, 'tipo' => 'DIARIO', 'supervisor_id' => $diarioRota->getSupervisorId(), 'empresa_id' => $supervidor->empresa_id ); $id = $dbtableLancamento->insert($dadosLancamento); if($id > 0){ return $diarioId; }else{ throw new Exception("Ocorreu um erro"); } } return null; } /** * Exclui o registro passado por parâmetro * @param int $id * @return int The number of rows deleted */ public function excluir($id) { if ($id > 0) { $dbtable = new Model_DbTable_DiarioRota(); return $dbtable->delete("id = {$id}"); } return null; } public function excluirLancamento($lancamentoId) { if ($lancamentoId > 0) { $dbtable = new Model_DbTable_Lancamento(); return $dbtable->delete("id = {$lancamentoId}"); } return null; } /** * Retorna uma lista * @param string $where * @param string $order * @param int $count * @param int $offset * @return array */ public function listar($where = null, $order = null, $count = null, $offset = null) { $dbtable = new Model_DbTable_DiarioRota(); return $dbtable->fetchAll($where, $order, $count, $offset); } public function exibir($id){ $dbtable = new Model_DbTable_DiarioRota(); return $dbtable->fetchRow("id = " . $id); } public function getDiarios($fields = array(), $page = null, $limit = null, $order = null, $range = null){ $dbtable = new Model_DbTable_DiarioRota(); $select = $dbtable->getAdapter()->select()->from(array('diarios' => 'tb_diario_rotas'), array('diarios.*')) ->joinInner(array('supervisor' => 'tb_gerente_rota'), "supervisor.id = diarios.supervisor_id", array('supervisor_nome' => 'supervisor.nome')) ->joinInner(array('lancamentos' => 'tb_lancamentos'), "lancamentos.diario_rota_id = diarios.id", array('valor', 'status_viagem', 'lancamento_id' => 'lancamentos.id', 'tipo')) ->where('diarios.excluido <> 1') ->group('lancamentos.diario_rota_id'); if(isset($fields['supervisor_id']) && !empty($fields['supervisor_id'])) { $select->where('diarios.supervisor_id = ' . $fields['supervisor_id']); } if (isset($fields['data_saida']) && !empty($fields['data_saida']) && isset($fields['data_retorno']) && !empty($fields['data_retorno'])) { $select->where("(data_saida >= STR_TO_DATE('" . $fields['data_saida'] . "', '%d/%m/%Y')" . " AND data_retorno <= STR_TO_DATE('" . $fields['data_retorno'] . "', '%d/%m/%Y'))"); } if (isset($fields['status']) && !empty($fields['status'])) { $select->where("diarios.status = '" . $fields['status'] . "'"); } if (isset($fields['status_filter']) && !empty($fields['status_filter'])) { if( $fields['status_filter'] == 'ABERTO' ){ $select->where("diarios.status = '" . $fields['status_filter'] . "'"); } else { $select->where("diarios.status = '" . $fields['status_filter'] . "'"); } } if($order) { $select->order($order); }else{ $select->order('data_saida ASC'); } if ($page) { $paginator = Zend_Paginator::factory($select); $paginator->setCurrentPageNumber($page); if ($limit && is_numeric($limit)) { $paginator->setItemCountPerPage($limit); } if ($range && is_numeric($range)) { $paginator->setPageRange($range); } return $paginator; } return $dbtable->getAdapter()->fetchAll($select); } public function excluirSelecionados(array $diarios) { if( !is_array($diarios) ){ return 0; } $cont = 0; foreach ( $diarios as $diarioId ) { $result = $this->excluir($diarioId); if( $result > 0 ){ $cont++; } } return $cont; } public function getLancamentosDiarios($diarioId) { $dbTable = new Model_DbTable_Lancamento(); $select = $dbTable->getAdapter()->select()->from(array('lancamentos' => 'tb_lancamentos'), array('descricao', 'valor_pago', 'data_pagamento', 'resumo_diario', 'diario_tipo_id')) ->joinInner(array('diarios' => 'tb_diario_rotas'), "diarios.id = lancamentos.diario_rota_id", array('data_saida', 'data_retorno')) ->joinInner(array('supervisor' => 'tb_gerente_rota'), "supervisor.id = lancamentos.supervisor_id", array('supervisor_nome' => 'supervisor.nome')) ->joinLeft(array('rota' => 'tb_rotas'), "rota.id = lancamentos.rota_id", array('nome_rota' => 'rota.nome', 'rota_id' => 'rota.id')) ->where('lancamentos.excluido <> 1') ->where("lancamentos.data_pagamento is not null or lancamentos.data_pagamento <> '0000-00-00'") ->where("lancamentos.diario_rota_id = '" . $diarioId . "'"); return $dbTable->getAdapter()->fetchAll($select); } public function getVisitas(array $fields) { $dbTable = new Model_DbTable_VisitaRota(); $select = $dbTable->getAdapter()->select()->from(array('visitas_rota' => 'tb_visitas_rota'), array('id', 'rota_id', 'corretor_id', 'cidade', 'uf', 'resumo', 'data')) ->joinInner(array('diarios' => 'tb_diario_rotas'), "diarios.id = visitas_rota.rota_id", array()) ->joinInner(array('corretores' => 'tb_corretores'), "visitas_rota.corretor_id = corretores.id", array('corretor' => 'nome')) ->joinInner(array('rotas' => 'tb_rotas'), "corretores.rota_id = rotas.id", array('rota' => 'nome')) ->where('visitas_rota.excluido <> 1'); if( !empty($fields['diario_id']) ){ $select->where("diarios.id = ?", $fields['diario_id']); } if( !empty($fields['rota_id']) ){ $select->where("rotas.id = ?", $fields['rota_id']); } if( !empty($fields['gerente_rota_id']) ){ $select->where("diarios.supervisor_id = ?", $fields['gerente_rota_id']); } if( !empty($fields['data_visita_de']) ){ $select->where("visitas_rota.data >= STR_TO_DATE(?, '%d/%m/%Y')", $fields['data_visita_de']); } if( !empty($fields['data_visita_a']) ){ $select->where("visitas_rota.data <= STR_TO_DATE(?, '%d/%m/%Y')", $fields['data_visita_a']); } if( Yuppie_Auth::getIdentity()->grupo == "Supervisor" ){ $select->where("diarios.supervisor_id = ?", Yuppie_Auth::getIdentity()->id); } return $dbTable->getAdapter()->fetchAll($select); } }
💾 保存文件
← 返回文件管理器