Advertisement
Guest User

ReceitaDespesa

a guest
Jul 4th, 2017
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 9.35 KB | None | 0 0
  1. <?php
  2. //BUSCANDO AS CLASSES
  3. include_once __DIR__ . "/Conexao.class.php";
  4.  
  5. class ReceitaDespesa {
  6.  
  7.     //ATRIBUTOS
  8.     private $con;
  9.     private $idSequencial;
  10.     private $id;
  11.     private $valor;
  12.     private $dataVencimento;
  13.     private $realizado;
  14.     private $dataRealizado;
  15.     private $parcelas;
  16.     private $numeroParcela;
  17.     private $observacoes;
  18.     private $lancamento;
  19.     private $tipoMovimento;
  20.     private $tipo;
  21.     private $idUsuario;
  22.  
  23.     //CONSTRUTOR
  24.     public function __construct() {
  25.         $this->con = new Conexao();
  26.     }
  27.  
  28.     //GETTERS E SETTERS
  29.     public function setIdSequencial($idSequencial) {
  30.         $this->idSequencial = $idSequencial;
  31.     }
  32.     public function getIdSequencial() {
  33.         return $this->idSequencial;
  34.     }
  35.     public function setId($id) {
  36.         $this->id = $id;
  37.     }
  38.     public function getId() {
  39.         return $this->id;
  40.     }
  41.     public function setValor($valor) {
  42.         $this->valor = $valor;
  43.     }
  44.     public function getValor() {
  45.         return $this->valor;
  46.     }
  47.     public function setDataVencimento($dataVencimento) {
  48.         $this->dataVencimento = $dataVencimento;
  49.     }
  50.     public function getDataVencimento() {
  51.         return $this->dataVencimento;
  52.     }
  53.     public function setRealizado($realizado) {
  54.         $this->realizado = $realizado;
  55.     }
  56.     public function getRealizado() {
  57.         return $this->realizado;
  58.     }
  59.     public function setDataRealizado($dataRealizado) {
  60.         $this->dataRealizado = $dataRealizado;
  61.     }
  62.     public function getDataRealizado() {
  63.         return $this->dataRealizado;
  64.     }
  65.     public function setParcelas($parcelas) {
  66.         $this->parcelas = $parcelas;
  67.     }
  68.     public function getParcelas() {
  69.         return $this->parcelas;
  70.     }
  71.     public function setNumeroParcela($numeroParcela) {
  72.         $this->numeroParcela = $numeroParcela;
  73.     }
  74.     public function getNumeroParcela() {
  75.         return $this->numeroParcela;
  76.     }
  77.     public function setObservacoes($observacoes) {
  78.         $this->observacoes = $observacoes;
  79.     }
  80.     public function getObversacoes() {
  81.         return $this->observacoes;
  82.     }
  83.     public function setLancamento($lancamento) {
  84.         $this->lancamento = $lancamento;
  85.     }
  86.     public function getLancamento() {
  87.         return $this->lancamento;
  88.     }
  89.     public function setTipoMovimento($tipoMovimento) {
  90.         $this->tipoMovimento= $tipoMovimento;
  91.     }
  92.     public function getTipoMovimento() {
  93.         return $this->tipoMovimento;
  94.     }
  95.     public function setTipo($tipo) {
  96.         $this->tipo = $tipo;
  97.     }
  98.     public function getTipo() {
  99.         return $this->tipo;
  100.     }
  101.     public function setIdUsuario($idUsuario) {
  102.         $this->idUsuario = $idUsuario;
  103.     }
  104.     public function getIdUsuario() {
  105.         return $this->idUsuario;
  106.     }
  107.  
  108.     //METODOS
  109.     public function ListarSaldoPrevisto()
  110.     {
  111.         $sql  = "SELECT IFNULL(FORMAT(SUM(t.valor),2,'de_DE'),'0,00') AS saldo_previsto ";
  112.         $sql .= "FROM (SELECT d.valor_despesa*-1 AS valor, d.data_vencimento, d.id_usuario FROM despesas AS d ";
  113.         $sql .= "UNION ";
  114.         $sql .= "SELECT r.valor_receita, r.data_vencimento, r.id_usuario FROM receitas AS r) AS t ";
  115.         $sql .= "WHERE DATE_FORMAT(t.data_vencimento,'%Y-%m') <= :periodo AND t.id_usuario = :id_usuario";
  116.         try {
  117.             $query = $this->con->conectar()->prepare($sql);
  118.             $query->bindParam(":id_usuario", $this->idUsuario,      PDO::PARAM_INT);
  119.             $query->bindParam(":periodo",    $this->dataVencimento, PDO::PARAM_STR);
  120.             $query->execute();
  121.             $retorno = array();
  122.             while ($linha = $query->fetch(PDO::FETCH_ASSOC)) {
  123.                 $retorno[] = $linha;
  124.             }
  125.             return $retorno;
  126.         } catch(PDOException $e) {
  127.             return "Error: ".$e->getMessage();
  128.         }
  129.     }
  130.  
  131.     public function ListarSaldoEfetivo()
  132.     {
  133.         $sql  = "SELECT IFNULL(FORMAT(SUM(t.valor),2,'de_DE'),'0,00') AS saldo_efetivo ";
  134.         $sql .= "FROM (SELECT d.valor_despesa*-1 AS valor, d.data_vencimento, d.pago AS realizado, d.id_usuario FROM despesas AS d ";
  135.         $sql .= "UNION ";
  136.         $sql .= "SELECT r.valor_receita, r.data_vencimento, r.recebido AS realizado, r.id_usuario FROM receitas AS r) AS t ";
  137.         $sql .= "WHERE DATE_FORMAT(t.data_vencimento,'%Y-%m') <= :periodo AND t.realizado = 1 AND t.id_usuario = :id_usuario";
  138.         try {
  139.             $query = $this->con->conectar()->prepare($sql);
  140.             $query->bindParam(":id_usuario", $this->idUsuario,      PDO::PARAM_INT);
  141.             $query->bindParam(":periodo",    $this->dataVencimento, PDO::PARAM_STR);
  142.             $query->execute();
  143.             $retorno = array();
  144.             while ($linha = $query->fetch(PDO::FETCH_ASSOC)) {
  145.                 $retorno[] = $linha;
  146.             }
  147.             return $retorno;
  148.         } catch(PDOException $e) {
  149.             return "Error: ".$e->getMessage();
  150.         }
  151.     }
  152.  
  153.     public function ListarVencimentosProximos()
  154.     {
  155.         $sql  = "SELECT DATE_FORMAT(data_vencimento, '%d/%m/%Y') data_vencimento, FORMAT(valor, 2, 'de_DE') AS valor, realizado, lancamento, tipo ";
  156.         $sql .= "FROM (SELECT r.data_vencimento AS data_vencimento, r.valor_receita AS valor, r.recebido AS realizado, 'Receita' AS lancamento, tr.tipo_receita AS tipo, r.id_usuario AS id_usuario ";
  157.         $sql .= "FROM receitas AS r INNER JOIN tipo_receita AS tr ON (r.id_tipo_receita = tr.id_tipo_receita) ";
  158.         $sql .= "UNION ";
  159.         $sql .= "SELECT d.data_vencimento AS data_vencimento, d.valor_despesa AS valor, d.pago AS realizado, c.nome_categoria AS lancamento, td.tipo_despesa AS tipo, d.id_usuario AS id_usuario ";
  160.         $sql .= "FROM despesas AS d INNER JOIN tipo_despesa AS td ON (d.id_tipo_despesa = td.id_tipo_despesa) INNER JOIN categorias AS c ON (td.id_categoria = c.id_categoria)) AS origem ";
  161.         $sql .= "WHERE realizado = 0 AND data_vencimento BETWEEN (CURRENT_DATE() - INTERVAL 10 DAY) AND CURRENT_DATE() AND id_usuario = :id_usuario ORDER BY data_vencimento DESC";
  162.         try {
  163.             $query = $this->con->conectar()->prepare($sql);
  164.             $query->bindParam(":id_usuario", $this->idUsuario, PDO::PARAM_INT);
  165.             $query->execute();
  166.             $retorno = array();
  167.             while ($linha = $query->fetch(PDO::FETCH_ASSOC)) {
  168.                 $retorno[] = $linha;
  169.             }
  170.             return $retorno;
  171.         } catch(PDOException $e) {
  172.             return "Error: ".$e->getMessage();
  173.         }
  174.     }
  175.  
  176.     public function GerarRelatorioExtrato()
  177.     {
  178.         $insertData = array();
  179.         $sql  = "SELECT FORMAT(valor,2,'de_DE') AS valor, DATE_FORMAT(data_vencimento, '%d/%m/%Y') AS data_vencimento, realizado, DATE_FORMAT(data_realizado, '%d/%m/%Y') AS data_realizado, parcelas, numero_parcela, observacoes, lancamento, tipo_movimento, tipo, id_usuario ";
  180.         $sql .= "FROM (SELECT r.valor_receita AS valor, r.data_vencimento AS data_vencimento, r.recebido AS realizado, r.data_recebimento AS data_realizado, r.parcelas AS parcelas, r.numero_parcela AS numero_parcela, r.observacoes AS observacoes, 'Receita' AS lancamento, re.tipo_recebimento AS tipo_movimento, tr.tipo_receita AS tipo, r.id_usuario AS id_usuario FROM receitas AS r ";
  181.         $sql .= "INNER JOIN tipo_receita AS tr ON (r.id_tipo_receita = tr.id_tipo_receita) ";
  182.         $sql .= "INNER JOIN tipo_recebimento AS re ON (r.id_tipo_recebimento = re.id_tipo_recebimento) ";
  183.         $sql .= "UNION  ";
  184.         $sql .= "SELECT d.valor_despesa AS valor, d.data_vencimento AS data_vencimento, d.pago AS realizado, d.data_pagamento AS data_realizado, d.parcelas as parcelas, d.numero_parcela as numero_parcela, d.observacoes as observacoes, c.nome_categoria as lancamento, tp.tipo_pagamento as tipo_movimento, td.tipo_despesa AS tipo, d.id_usuario AS id_usuario FROM despesas AS d ";
  185.         $sql .= "INNER JOIN tipo_despesa AS td ON (d.id_tipo_despesa = td.id_tipo_despesa) ";
  186.         $sql .= "INNER JOIN tipo_pagamento AS tp ON (d.id_tipo_pagamento = tp.id_tipo_pagamento) ";
  187.         $sql .= "INNER JOIN categorias AS c ON (td.id_categoria = c.id_categoria)) AS origem ";
  188.         $sql .= "WHERE id_usuario = :id_usuario ";
  189.  
  190.         $insertData[":id_usuario"] = $this->idUsuario;
  191.  
  192.         //SE O MÊS ESPECÍFICO NÃO FOR VAZIO
  193.         if(!empty($this->dataVencimento) || !empty($this->dataRealizado)) {
  194.            $sql .= "AND (DATE_FORMAT(data_realizado,'%Y-%m') = :periodo_realizado OR DATE_FORMAT(data_vencimento,'%Y-%m') = :periodo_vencimento) ";
  195.            $insertData[":periodo_realizado"]  = $this->dataRealizado;
  196.            $insertData[":periodo_vencimento"] = $this->dataVencimento;
  197.         }
  198.  
  199.         $n = 0; //VARIÁVEL DE INCREMENTO
  200.         //SE O TIPO NÃO FOR VAZIO
  201.         if(!empty($this->tipo)) {
  202.            $sql .= "AND (";
  203.            foreach($this->tipo as $tipo) {
  204.                ($n > 0) ? $sql .= "OR " : "";
  205.                $sql .= "tipo = :tipo".$n." ";
  206.                $insertData[":tipo".$n] = $tipo;
  207.                $n++;
  208.            }
  209.            $sql .= ") ";
  210.         }
  211.  
  212.         //SE REALIZADO FOR UM NÚMERO E FOR IGUAL A 0 ou 1
  213.         if(is_numeric($this->realizado)) {
  214.            if($this->realizado == 0 || $this->realizado == 1) {
  215.               $sql .= "AND realizado = :realizado ";
  216.               $insertData[":realizado"] = $this->realizado;
  217.            }
  218.         }
  219.  
  220.         $sql .= "ORDER BY numero_parcela ASC";
  221.         try {
  222.             $query = $this->con->conectar()->prepare($sql);
  223.             $query->execute($insertData);
  224.             $retorno = array();
  225.             while ($linha = $query->fetch(PDO::FETCH_ASSOC)) {
  226.                 $retorno[] = $linha;
  227.             }
  228.             return $retorno;
  229.         } catch(PDOException $e) {
  230.             return "Error: ".$e->getMessage();
  231.         }
  232.     }
  233. }
  234. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement