✏️ 正在编辑: Receita.php
路径:
/srv/systems_dir/yuppiecred/application/models/Receita.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php class Model_Receita extends Model_Lancamento { public function _toArray() { $dbtable = new Model_DbTable_Lancamento(); $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(); } } $data['tipo'] = "RECEITA"; return $data; } /** * Insere ou altera o registro passado por parâmetro * @param Model_Receita $receita */ public function salvar(Model_Receita $receita) { $dbtable = new Model_DbTable_Lancamento(); if( $receita->getId() > 0 ){ $dbtable->update($receita->_toArray(), "id = " . $receita->getId()); return $receita->getId(); } else { if( $this->getNumeroParcelas() > 1 ){ //insere a primeira parcela $idPai = $dbtable->insert($receita->_toArray()); $receita->setIdPai($idPai); //insere a repeticao $this->repetir($this->preparaRepeticao('RECEITA')); } else { return $dbtable->insert($receita->_toArray()); } } } public function exportarReceitas($receitas) { $objPhpExcel = new PHPExcel(); $objPhpExcel->getProperties()->setDescription('Relatório de Receitas'); $objPhpExcel->getProperties()->setCreator('Yuppie Tech'); $objPhpExcel->getProperties()->setTitle('Relatório de Receitas'); $objPhpExcel->setActiveSheetIndex(0); $objPhpExcel->getActiveSheet()->setTitle('Receitas'); //cabeçalho do arquivo $objPhpExcel->getActiveSheet()->SetCellValue('A' . 1, "Empresa"); $objPhpExcel->getActiveSheet()->SetCellValue('B' . 1, "Corretor"); $objPhpExcel->getActiveSheet()->SetCellValue('C' . 1, "Categoria"); $objPhpExcel->getActiveSheet()->SetCellValue('D' . 1, "Descricao"); $objPhpExcel->getActiveSheet()->SetCellValue('E' . 1, "Fornecedor"); $objPhpExcel->getActiveSheet()->SetCellValue('F' . 1, "Banco"); $objPhpExcel->getActiveSheet()->SetCellValue('G' . 1, "Agencia"); $objPhpExcel->getActiveSheet()->SetCellValue('H' . 1, "Conta"); $objPhpExcel->getActiveSheet()->SetCellValue('I' . 1, "Tipo Conta"); $objPhpExcel->getActiveSheet()->SetCellValue('J' . 1, "Vencimento"); $objPhpExcel->getActiveSheet()->SetCellValue('K' . 1, "Valor"); $objPhpExcel->getActiveSheet()->SetCellValue('L' . 1, "Pagamento"); $objPhpExcel->getActiveSheet()->SetCellValue('M' . 1, "Valor Pago"); $totalRegistrosReceitas = count($receitas); $totalValor = 0; $totalValorPago = 0; //linhas do arquivo for ( $i = 0; $i < $totalRegistrosReceitas; $i++ ) { $fornecedorNome = null; $fornecedorBanco = null; $fornecedorAgencia = null; $fornecedorConta = null; $fornecedorTipoConta = null; $totalValor += $receitas[$i]['valor']; $totalValorPago += $receitas[$i]['valor_pago']; if( $receitas[$i]['fornecedor_id'] > 0 && $receitas[$i]['funcionario_id'] > 0 ){ $fornecedorNome = $receitas[$i]['funcionario_nome']; $fornecedorBanco = $receitas[$i]['funcionario_banco']; $fornecedorAgencia = $receitas[$i]['funcionario_agencia']; $fornecedorConta = $receitas[$i]['funcionario_conta']; } elseif( $receitas[$i]['fornecedor_id'] > 0 ){ $fornecedorNome = $receitas[$i]['fornecedor']; $fornecedorBanco = $receitas[$i]['fornecedor_banco']; $fornecedorAgencia = $receitas[$i]['fornecedor_agencia']; $fornecedorConta = $receitas[$i]['fornecedor_conta']; $fornecedorTipoConta = $receitas[$i]['fornecedor_tipo_conta']; } elseif( $receitas[$i]['funcionario_id'] > 0 ){ $fornecedorNome = $receitas[$i]['funcionario_nome']; $fornecedorBanco = $receitas[$i]['funcionario_banco']; $fornecedorAgencia = $receitas[$i]['funcionario_agencia']; $fornecedorConta = $receitas[$i]['funcionario_conta']; $fornecedorTipoConta = $receitas[$i]['funcionario_tipo_conta']; } elseif( $receitas[$i]['corretor_id'] > 0 ){ $fornecedorNome = $receitas[$i]['corretor_nome']; $fornecedorBanco = $receitas[$i]['corretor_banco']; $fornecedorAgencia = $receitas[$i]['corretor_agencia']; $fornecedorConta = $receitas[$i]['corretor_conta']; $fornecedorTipoConta = $receitas[$i]['corretor_tipo_conta']; } $objPhpExcel->getActiveSheet()->setCellValueByColumnAndRow(0, $i + 2, $receitas[$i]['empresa']); $objPhpExcel->getActiveSheet()->setCellValueByColumnAndRow(1, $i + 2, $receitas[$i]['corretor']); $objPhpExcel->getActiveSheet()->setCellValueByColumnAndRow(2, $i + 2, $receitas[$i]['categoria']); $objPhpExcel->getActiveSheet()->setCellValueByColumnAndRow(3, $i + 2, $receitas[$i]['descricao']); $objPhpExcel->getActiveSheet()->setCellValueByColumnAndRow(4, $i + 2, $fornecedorNome); $objPhpExcel->getActiveSheet()->setCellValueByColumnAndRow(5, $i + 2, $fornecedorBanco); $objPhpExcel->getActiveSheet()->setCellValueByColumnAndRow(6, $i + 2, $fornecedorAgencia); $objPhpExcel->getActiveSheet()->setCellValueByColumnAndRow(7, $i + 2, $fornecedorConta); $objPhpExcel->getActiveSheet()->setCellValueByColumnAndRow(8, $i + 2, $fornecedorTipoConta); $objPhpExcel->getActiveSheet()->setCellValueByColumnAndRow(9, $i + 2, date('d/m/Y', strtotime($receitas[$i]['data_vencimento']))); $objPhpExcel->getActiveSheet()->setCellValueByColumnAndRow(10, $i + 2, number_format($receitas[$i]['valor'], 2, ',', '.')); $objPhpExcel->getActiveSheet()->setCellValueByColumnAndRow(11, $i + 2, empty($receitas[$i]['data_pagamento']) ? '' : date('d/m/Y', strtotime($receitas[$i]['data_pagamento']))); $objPhpExcel->getActiveSheet()->setCellValueByColumnAndRow(12, $i + 2, number_format($receitas[$i]['valor_pago'], 2, ',', '.')); } // rodape $objPhpExcel->getActiveSheet()->setCellValueByColumnAndRow(0, $totalRegistrosReceitas + 2, 'Total'); $objPhpExcel->getActiveSheet()->setCellValueByColumnAndRow(1, $totalRegistrosReceitas + 2, ''); $objPhpExcel->getActiveSheet()->setCellValueByColumnAndRow(2, $totalRegistrosReceitas + 2, ''); $objPhpExcel->getActiveSheet()->setCellValueByColumnAndRow(3, $totalRegistrosReceitas + 2, ''); $objPhpExcel->getActiveSheet()->setCellValueByColumnAndRow(4, $totalRegistrosReceitas + 2, ''); $objPhpExcel->getActiveSheet()->setCellValueByColumnAndRow(5, $totalRegistrosReceitas + 2, ''); $objPhpExcel->getActiveSheet()->setCellValueByColumnAndRow(6, $totalRegistrosReceitas + 2, ''); $objPhpExcel->getActiveSheet()->setCellValueByColumnAndRow(7, $totalRegistrosReceitas + 2, ''); $objPhpExcel->getActiveSheet()->setCellValueByColumnAndRow(8, $totalRegistrosReceitas + 2, ''); $objPhpExcel->getActiveSheet()->setCellValueByColumnAndRow(9, $totalRegistrosReceitas + 2, ''); $objPhpExcel->getActiveSheet()->setCellValueByColumnAndRow(10, $totalRegistrosReceitas + 2, number_format($totalValor, 2, ',', '.')); $objPhpExcel->getActiveSheet()->setCellValueByColumnAndRow(11, $totalRegistrosReceitas + 2, ''); $objPhpExcel->getActiveSheet()->setCellValueByColumnAndRow(12, $totalRegistrosReceitas + 2, number_format($totalValorPago, 2, ',', '.')); // $objWriter = new PHPExcel_Writer_Excel2007($objPhpExcel); $fileName = PUBLIC_PATH . "/../public/downloads/receitas.xlsx"; $objWriter->save($fileName); return $fileName; } public function alterarItem($id, $dados) { $dados = array_filter($dados); if (!$dados) { throw new Exception('Nenhum dado foi alterado'); } // Força a formatação de campos $despesa = new self(); $despesa->setOptions($dados); $dados = array_filter($despesa->_toArray()); unset($dados['tipo']); $dbtable = new Model_DbTable_Lancamento(); return $dbtable->update($dados, "id = {$id}"); } /** * 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_Lancamento(); return $dbtable->delete("id = " . $id); } 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) { $where = $where != null ? "tipo = 'RECEITA' AND " . $where : "tipo = 'RECEITA'"; $dbtable = new Model_DbTable_Lancamento(); return $dbtable->fetchAll($where, $order, $count, $offset); } /** * Retorna um fetchRow do item passado por parâmetro * @param int $id * @return Zend_Db_Table_Row_Abstract | null */ public function exibir($id) { $dbtable = new Model_DbTable_Lancamento(); return $dbtable->fetchRow("id = " . $id); } public function getPaginatorAdapter($fields, $order = null) { $params = array("tipo = 'RECEITA'"); if( isset($fields['categoria_id']) && !empty($fields['categoria_id']) ){ $params[] = "categoria_id = " . $fields['categoria_id']; } if( isset($fields['descricao']) && !empty($fields['descricao']) ){ $params[] = "descricao LIKE '%" . $fields['descricao'] . "%'"; } if( isset($fields['data_vencimento']) && !empty($fields['data_vencimento']) ){ $params[] = "data_vencimento = STR_TO_DATE('" . $fields['data_vencimento'] . "', '%d/%m/%Y')"; } $where = null; if( count($params) > 0 ){ $where = implode(" AND ", $params); } $dbtable = new Model_DbTable_Lancamento(); $select = $dbtable->select(); if( $where != null ) $select->where( $where); if( $order != null ) $select->order( $order); return new Zend_Paginator_Adapter_DbTableSelect($select); } /** * * @param string $data * @return Zend_Db_Table_Rowset_Abstract | array | null */ public function getLancamentosDia($data) { return $this->listar("data_vencimento = '" . $data . "'", 'data_vencimento ASC'); } /** * * @param string $data YYYY-MM * @return Zend_Db_Table_Rowset_Abstract | array | null */ public function getLancamentosMes($data) { $dbtable = new Model_DbTable_Lancamento(); $select = $dbtable->select()->from('tb_lancamentos', array('valor_total' => "SUM(valor)", 'categoria_id')); $select->where("tipo = 'RECEITA' AND DATE_FORMAT(data_vencimento, '%Y-%m') = '" . $data . "'"); $select->group(array('categoria_id')); return $dbtable->fetchAll($select); } public function getLancamentos($fields, $order = 'data_vencimento ASC') { $params = array("l.excluido<> 1", "l.tipo = 'RECEITA'"); $where = null; if (!empty($fields['vencimento_de'])) { $params[] = "l.data_vencimento >= STR_TO_DATE('" . $fields['vencimento_de'] . "', '%d/%m/%Y')"; } if (!empty($fields['vencimento_a'])) { $params[] = "l.data_vencimento <= STR_TO_DATE('" . $fields['vencimento_a'] . "', '%d/%m/%Y')"; } if (!empty($fields['pagamento_de'])) { $params[] = "l.data_pagamento >= STR_TO_DATE('" . $fields['pagamento_de'] . "', '%d/%m/%Y')"; } if (!empty($fields['pagamento_a'])) { $params[] = "l.data_pagamento <= STR_TO_DATE('" . $fields['pagamento_a'] . "', '%d/%m/%Y')"; } if (isset($fields['empresa_id']) && $fields['empresa_id'] > 0) { $params[] = "l.empresa_id = {$fields['empresa_id']}"; } if (isset($fields['fornecedor_id']) && $fields['fornecedor_id'] > 0) { $params[] = "l.fornecedor_id = {$fields['fornecedor_id']}"; } if (isset($fields['categoria_id']) && $fields['categoria_id'] > 0) { $params[] = "l.categoria_id = {$fields['categoria_id']}"; } if (!empty($fields['numero_documento'])) { $params[] = "l.numero_documento = '" . $fields['numero_documento'] . "'"; } if (!empty($fields['setor'])) { $params[] = "setor LIKE '%" . $fields['setor'] . "%'"; } if (!empty($fields['subsetor'])) { $params[] = "subsetor LIKE '%" . $fields['subsetor'] . "%'"; } if (!empty($fields['corretor_id'])) { $params[] = "l.corretor_id = " . $fields['corretor_id']; } if (!empty($fields['situacao'])){ switch($fields['situacao']){ case "Recebido": case "Pago": $params[] = "data_pagamento IS NOT NULL AND data_pagamento <> '0000-00-00'"; break; case "A Receber": case "A Pagar": $params[] = "(data_pagamento IS NULL OR data_pagamento = '0000-00-00')"; break; } } if (!empty($fields['descricao'])) { $params[] = "l.descricao like '%" . $fields['descricao'] . "%'"; } if (!empty($fields['conta_id']) ) { $params[] = "l.conta_id = " . $fields['conta_id']; } if (!empty($fields['competencia'])) { $params[] = "competencia = '{$fields['competencia']}'"; } if( count($params) > 0 ){ $where = implode(' AND ', $params); } $dbtable = new Model_DbTable_Lancamento(); $select = $dbtable->getAdapter()->select()->from(array('l' => 'tb_lancamentos'), array('l.*')) ->joinLeft(array('e' => 'tb_empresas'), "l.empresa_id = e.id", array('empresa' => 'nome')) ->joinLeft(array('c' => 'tb_categorias'), "l.categoria_id = c.id", array('categoria' => 'nome')) ->joinLeft(array('f' => 'tb_fornecedores'), "l.fornecedor_id = f.id", array( 'fornecedor' => 'nome', 'fornecedor_banco' => 'banco', 'fornecedor_agencia' => 'agencia', 'fornecedor_conta' => 'conta', 'fornecedor_tipo_conta' => 'tipo_conta')) ->joinLeft(array( 'co' => 'tb_corretores' ), 'l.corretor_id = co.id', array( 'corretor_nome' => 'nome', 'corretor_banco' => 'banco', 'corretor_agencia' => 'agencia', 'corretor_conta' => 'conta', 'corretor_tipo_conta' => 'tipo_conta', 'corretor_cpf' => 'cpf' )) ->joinLeft(array( 'fu' => 'tb_fornecedores' ), 'l.funcionario_id = fu.id', array( 'funcionario_nome' => 'nome', 'funcionario_banco' => 'banco', 'funcionario_agencia' => 'agencia', 'funcionario_conta' => 'conta', 'funcionario_tipo_conta' => 'tipo_conta', 'funcionario_cpf' => 'cpf_responsavel' )) ->joinLeft(array('contas' => 'tb_contas'), "l.conta_id = contas.id", array('conta' => 'nome')) ->joinLeft(array('corretores' => 'tb_corretores'), "corretores.id = l.corretor_id", array('corretor' => 'corretores.nome')); $select->where($where); if( $order != null ){ $select->order($order); } return $dbtable->getAdapter()->fetchAll($select); } }
💾 保存文件
← 返回文件管理器