✏️ 正在编辑: RelatorioDiario.php
路径:
/srv/systems_dir/yuppiecred/application/models/DbTable/RelatorioDiario.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php use Carbon\Carbon; use Doctrine\Common\Collections\ArrayCollection; class Model_DbTable_RelatorioDiario extends Core_DbTable { /** @var string */ public const TIPO_DESPESA = 'DESPESA'; /** * @return array */ public function rankingVendasDiario(): array { $date = Carbon::yesterday(); $date->addDays($this->daysToFriday($date)); $dateFilter = (Carbon::now())->addMonths(-6); $diffDias = $dateFilter->diffInDays($date); $medDigitacao = '(sum(con.base_comissao_empresa_valor) /' . $diffDias . ")"; $columns = [ 'corretor' => 'cor.nome', 'qtd_contratos' => 'con_dia.qtd_contratos', 'sum_contratos' => 'sum(con.base_comissao_empresa_valor)', 'med_digitacao' => $medDigitacao, 'sum_dia' => 'con_dia.sum_dia', 'per_crescimento' => "(100 * (con_dia.sum_dia - $medDigitacao) / $medDigitacao)" ]; $sql = $this->getAdapter() ->select() ->from(['con' => 'tb_contratos'], $columns) ->join(['cor' => 'tb_corretores'], 'cor.id = con.corretor_id', []) ->join( ['con_dia' => $this->sqlVendasDiaCorretor($date->format('Y-m-d'))], 'con.corretor_id = con_dia.corretor_id', [] ) ->where( 'con.data_emissao >= ' . $dateFilter->format("'Y-m-d'") . ' AND ' . 'con.data_emissao <= ' . $date->format("'Y-m-d'") ) ->where('con.excluido <> ?', 1) ->where('cor.excluido <> ?', 1) ->having('sum_dia > 0') ->group('con.corretor_id') ->order('sum_dia DESC') ; $dados = $this->getAdapter()->fetchAll($sql); return !empty($dados) ? $dados : []; } /** * @param string $date * @return Zend_Db_Select */ public function sqlVendasDiaCorretor(string $date): Zend_Db_Select { return $this->getAdapter() ->select() ->from(['con_dia' => 'tb_contratos'], [ 'corretor_id' => 'con_dia.corretor_id', 'sum_dia' => 'sum(con_dia.base_comissao_empresa_valor)', 'qtd_contratos' => 'count(distinct con_dia.id)' ]) ->where("con_dia.data_emissao = ?", $date) ->where("con_dia.excluido <> ?", 1) ->group('con_dia.corretor_id') ; } /** * @param bool|null $holidays * @return Carbon */ public function yesterday(?bool $holidays = false): Carbon { $date = Carbon::yesterday(); return $date->addDays($holidays ? 0 : $this->daysToFriday($date)); } /** * @return ArrayCollection */ public function lancamentoDespesasPagas(): ArrayCollection { $columns = [ 'descricao' => 'descricao', 'vencimento' => 'data_vencimento', 'valor_pago' => 'valor_pago' ]; $sql = $this->getAdapter() ->select() ->from(['des' => 'tb_lancamentos'], $columns) ->where('tipo = ?', self::TIPO_DESPESA) ->where('data_pagamento = ?', date('Y-m-d')) ->where('excluido <> ?', 1); return new ArrayCollection($this->getAdapter()->fetchAll($sql)); } /** * @return ArrayCollection */ public function comissoesPagas(): ArrayCollection { $columns = [ 'banco' => 'b.nome', 'qtd_contratos' => 'count(distinct c.id)', 'valor' => 'sum(pc.valor)' ]; $sql = $this->getAdapter() ->select() ->from(['pg' => 'tb_protocolo_pagamento'], $columns) ->join(['pc' => 'tb_protocolo_contrato'], 'pg.id = pc.protocolo_id', []) ->join(['c' => 'tb_contratos'], 'c.id = pc.contrato_id', []) ->join(['b' => 'tb_bancos'], 'b.id = c.banco_id', []) ->group(['b.id']) ->where('c.excluido <> ?', 1) ->where('pg.data_quitacao = ?', date('Y-m-d')) ; return new ArrayCollection($this->getAdapter()->fetchAll($sql)); } }
💾 保存文件
← 返回文件管理器