-1
Hello, I have a problem that seems impossible to solve.
In my Laravel 6.X application, I have a report that performs database extracts for Excel files, this report has two extraction versions:
• Valued Activities (Functional)
• Activities by Period (Non-functional)
The two extraction modules have a similar structure, however, only the Job Activityvalued.php works. I realized that the variable (array) $Rows only ends up being filled in the job of valued activities, for some unknown reason in the other job this variable is not being filled
Controller
<?php
namespace app\Http\Controllers\Administrativo\Pit\Relatorio\Atividade;
use App\Http\Controllers\Controller;
use DB;
use App\Models\Metodo\Pit\PitTipoAtividades;
use App\Http\Requests\Pit\Relatorios\RelatorioAtividadeRequest;
use App\Jobs\Pit\Relatorios\Atividades\AtividadeValorizada;
use App\Jobs\Pit\Relatorios\Atividades\AtividadePorPeriodo;
class AtividadeController extends Controller{
public function __construct() {
$this->middleware('auth:administrativo');
}
public function index() {
$tipoatividades = PitTipoAtividades::all();
return view('administrativo.pit.relatorio.atividades.index')->with([
'acao' => 'Adicionar',
'tipoatividades' => $tipoatividades,
'ind_meses' => dominios('IND_MESES')
]);
}
public function getAtividadeValorizado(RelatorioAtividadeRequest $request){
try {
AtividadeValorizada::dispatchNow($request->all());
} catch (Exception $e) {
}
return response()->json(
route('admin.metodo.pit.efetivo.relatorio.atividade.index')
);
}
public function getAtividadePeriodoInformado(RelatorioAtividadeRequest $request){
try {
AtividadePorPeriodo::dispatchNow($request->all());
} catch (Exception $e) {
}
return response()->json(
route('admin.metodo.pit.efetivo.relatorio.atividade.index')
);
}
}
Job Valued Activities
<?php
namespace App\Jobs\Pit\Relatorios\Atividades;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use App\Exports\Excel\CollectionExport;
use Maatwebsite\Excel\Facades\Excel;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithStrictNullComparison;
use Maatwebsite\Excel\Concerns\WithTitle;
use Maatwebsite\Excel\Concerns\FromCollection;
use DB;
use Auth;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Facades\Storage;
use App\Models\Metodo\Pit\PitAtividadeExport;
use Monolog\Formatter\HtmlFormatter;
use Monolog\Formatter\LineFormatter;
use Monolog\Handler\RotatingFileHandler;
use Monolog\Logger;
use Monolog\Processor\MemoryUsageProcessor;
use Monolog\Processor\ProcessIdProcessor;
use Monolog\Processor\WebProcessor;
class AtividadeValorizada implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
protected $user;
protected $request;
public $timeout = 120; //O número de segundos que o trabalho pode ser executado antes do tempo limite
public $tries = 5; //O número de vezes que o trabalho pode ser tentado.
/**
* Create a new job instance.
*
* @return void
*/
public function __construct(array $request){
$this->user = Auth::user();
$this->request = $request;
$this->request['mes_referencia'] = str_pad($this->request['mes_referencia'], 2, '0', STR_PAD_LEFT);
}
public function handle(){
try{
$countAtividadeExport = PitAtividadeExport::whereRaw("ANO_MES = to_char(".$this->request['ano_letivo'].",'fm0000')||to_char(".$this->request['mes_referencia'].",'fm00')")->count();
$mesReferencia = '';
foreach(dominios('IND_MESES') as $meses){
if($meses['val_dominio_item'] == $this->request['mes_referencia']){
$mesReferencia = $meses['dsc_dominio_item'];
}
}
$rows = array();
$heards = null;
if($countAtividadeExport > 0 && isset($this->request['base_atual'])) {
$rows = DB::connection('metodo_hml')->select(" SELECT
p.cod_pessoa,
f.nom_func,
p.cod_ativde,
t.nom_ativde,
to_char(p.dat_inicio,'dd/mm/rrrr') dat_inicio,
to_char(p.dat_termino,'dd/mm/rrrr') dat_termino,
x.cod_emp,
x.cod_ccusto
FROM
pit_atividade p,
vwm_populis_func f,
pit_tp_atividade t,
g_centro_custo x,
g_pessoa a,
pit_tp_categoria_docente s
WHERE
p.cod_pessoa = f.cod_pessoa
AND p.cod_ativde = t.cod_ativde
AND p.cod_ativde = DECODE(:cod_atividade,NULL,p.cod_ativde,:cod_atividade)
AND p.cod_pessoa = a.cod_pessoa
AND a.cod_categoria = s.cod_categoria (+)
AND a.cod_sub_categoria = s.cod_sub_categoria (+)
AND p.cod_emp = x.cod_emp
AND p.cod_ccusto = x.cod_ccusto
AND s.ind_status = 'A'
AND p.ind_status = 'A'
AND TO_CHAR(:ano_letivo,'fm0000') || TO_CHAR(:mes_referencia,'fm00') BETWEEN TO_CHAR(p.dat_inicio,'rrrrmm') AND TO_CHAR(p.dat_termino,'rrrrmm')
AND nvl(TO_CHAR(f.dat_demissao,'yyyymm'),999999) >= TO_CHAR(:ano_letivo,'fm0000') || TO_CHAR(:mes_referencia,'fm00')
AND TO_CHAR(:ano_letivo,'fm0000') || TO_CHAR(:mes_referencia,'fm00') BETWEEN TO_CHAR(p.dat_inicio,'rrrrmm') AND TO_CHAR(p.dat_termino,'rrrrmm')
ORDER BY
p.cod_pessoa,
p.dat_inicio DESC,
p.dat_termino DESC",
[
'ano_letivo' => $this->request['ano_letivo'],
'mes_referencia' => $this->request['mes_referencia'],
'cod_atividade' => $this->request['tipo_atividade']
]);
foreach ($rows as $index => $row):
if ($row->ind_tp_peridiocidade = 'S') {
$horas_sem = $row->qtd_horas;
$horas_men = $row->qtd_horas * 4.5;
$rows[$index]->horas_sem = $horas_sem;
$rows[$index]->horas_men = $horas_men;
} elseif ($row->ind_tp_peridiocidade = 'Q') {
$horas_sem = $row->qtd_horas / 2;
$horas_men = $row->qtd_horas / 2 * 4.5;
$rows[$index]->horas_sem = $horas_sem;
$rows[$index]->horas_men = $horas_men;
} else {
$horas_sem = $row->qtd_horas / 4.5;
$horas_men = $row->qtd_horas;
$rows[$index]->horas_sem = $horas_sem;
$rows[$index]->horas_men = $horas_men;
}
//busca se o docente está afastado
$buscaDocenteAfastado = $this->getDocenteAfastado($row->cod_pessoa, $this->request['ano_letivo'], $this->request['mes_referencia']);
$rows[$index]->data_inicio_afastamento = $buscaDocenteAfastado[0]->data_inicio_afastamento;
$rows[$index]->data_termino_afastamento = $buscaDocenteAfastado[0]->data_termino_afastamento;
if ($buscaDocenteAfastado[0]->data_inicio_afastamento != '' && $row->status_docente = 'ATIVO') {
$rows[$index]->novo_status_docente = 'AFASTADO';
} else {
$rows[$index]->novo_status_docente = $row->status_docente;
}
$dataFunQtdDiasMes = "01-";
if(...}
$concatInicio = $dataFunQtdDiasMes.$this->request['mes_referencia'].'-'.$this->request['ano_letivo'];
$concatFim = $dataFunQtdDiasMesFim.$this->request['mes_referencia'].'-'.$this->request['ano_letivo'];
$atvd = 'ATVD';
if ($row->ind_tp_calc <> 'F') {
if ($row->ind_tp_peridiocidade = 'S') {
$valor = $row->pago_valor * 4.5;
$rows[$index]->pago_valor = $valor;
$valorPago = $this->round($row->cod_pessoa,$this->request['ano_letivo'],$this->request['mes_referencia'],"'$concatInicio'","'$concatFim'","'$atvd'");
$round = $row->pago_valor / 30 * $valorPago[0]->round;
$rows[$index]->vlr_informado = round($round,2);
} elseif ($row->ind_tp_peridiocidade = 'Q') {
$valor = $row->pago_valor / 2 * 4.5;
$rows[$index]->pago_valor = $valor;
$valorPago = $this->round($row->cod_pessoa,$this->request['ano_letivo'],$this->request['mes_referencia'],"'$concatInicio'","'$concatFim'","'$atvd'");
$round = $row->pago_valor / 30 * $valorPago[0]->round;
$rows[$index]->vlr_informado = round($round,2);
} else {
$valor = $row->pago_valor;
$rows[$index]->pago_valor = $valor;
$valorPago = $this->round($row->cod_pessoa,$this->request['ano_letivo'],$this->request['mes_referencia'],"'$concatInicio'","'$concatFim'","'$atvd'");
$round = $row->pago_valor / 30 * $valorPago[0]->round;
$rows[$index]->vlr_informado = round($round,2);
}
} else {
$valor = $row->pago_valor;
$rows[$index]->pago_valor = $valor;
$valorPago = $this->round($row->cod_pessoa,$this->request['ano_letivo'],$this->request['mes_referencia'],"'$concatInicio'","'$concatFim'","'$atvd'");
$round = $row->pago_valor / 30 * $valorPago[0]->round;
$rows[$index]->vlr_informado = round($round,2);
}
if(!$heards){
$heards = array_keys((array)$row);
}
endforeach;
}elseif($countAtividadeExport > 0 && !isset($this->request['base_atual'])){
$rows = DB::connection('metodo_hml')->select("
SELECT
p.cod_pessoa,
f.nom_func,
p.cod_ativde,
t.nom_ativde,
to_char(p.dat_inicio,'dd/mm/rrrr') dat_inicio,
to_char(p.dat_termino,'dd/mm/rrrr') dat_termino
FROM
pit_atividade_export p,
pit_funcionario_export f,
pit_tp_atividade_export t,
g_centro_custo x,
g_pessoa_export a,
pit_tp_cat_doc_export s
WHERE p.cod_pessoa = f.cod_pessoa
AND f.ano_mes = p.ano_mes
AND p.cod_ativde = t.cod_ativde
AND t.ano_mes = p.ano_mes
AND p.cod_pessoa = a.cod_pessoa
AND a.ano_mes = p.ano_mes
AND s.ind_status = 'I'
AND p.ind_status = 'A'
AND p.cod_emp = x.cod_emp
AND p.cod_ccusto = x.cod_ccusto
AND a.cod_categoria = s.cod_categoria(+)
AND a.cod_sub_categoria = s.cod_sub_categoria(+)
--AND s.ano_mes(+) = to_char(:ano_letivo,'fm0000')||to_char(:mes_referencia,'fm00')
AND p.cod_ativde = decode(:cod_atividade,null,p.cod_ativde,:cod_atividade)
AND p.ano_mes = to_char(:ano_letivo,'fm0000')||to_char(:mes_referencia,'fm00')
AND nvl(to_char(f.dat_demissao,'yyyymm'),999999) >= to_char(:ano_letivo,'fm0000')||to_char(:mes_referencia,'fm00')
AND to_char(:ano_letivo,'fm0000')||to_char(:mes_referencia,'fm00') BETWEEN to_char(p.dat_inicio,'rrrrmm') AND to_char(p.dat_termino,'rrrrmm')
ORDER BY
p.cod_pessoa,
p.dat_inicio desc,
p.dat_termino desc",
[
'ano_letivo' => $this->request['ano_letivo'],
'mes_referencia' => $this->request['mes_referencia'],
'cod_atividade' => $this->request['tipo_atividade']
]
);
foreach ($rows as $index => $row):
if ($row->ind_tp_peridiocidade = 'S') {
$horas_sem = $row->qtd_horas;
$horas_men = $row->qtd_horas * 4.5;
$rows[$index]->horas_sem = $horas_sem;
$rows[$index]->horas_men = $horas_men;
} elseif ($row->ind_tp_peridiocidade = 'Q') {
$horas_sem = $row->qtd_horas / 2;
$horas_men = $row->qtd_horas / 2 * 4.5;
$rows[$index]->horas_sem = $horas_sem;
$rows[$index]->horas_men = $horas_men;
} else {
$horas_sem = $row->qtd_horas / 4.5;
$horas_men = $row->qtd_horas;
$rows[$index]->horas_sem = $horas_sem;
$rows[$index]->horas_men = $horas_men;
}
//busca se o docente está afastado
$buscaDocenteAfastado = $this->getDocenteAfastado($row->cod_pessoa, $this->request['ano_letivo'], $this->request['mes_referencia']);
$rows[$index]->data_inicio_afastamento = $buscaDocenteAfastado[0]->data_inicio_afastamento;
$rows[$index]->data_termino_afastamento = $buscaDocenteAfastado[0]->data_termino_afastamento;
if ($buscaDocenteAfastado[0]->data_inicio_afastamento != '' && $row->status_docente = 'ATIVO') {
$rows[$index]->novo_status_docente = 'AFASTADO';
} else {
$rows[$index]->novo_status_docente = $row->status_docente;
}
$dataFunQtdDiasMes = "01-";
if(...){...}
$concatInicio = $dataFunQtdDiasMes.$this->request['mes_referencia'].'-'.$this->request['ano_letivo'];
$concatFim = $dataFunQtdDiasMesFim.$this->request['mes_referencia'].'-'.$this->request['ano_letivo'];
$atvd = 'ATVD';
if ($row->ind_tp_calc <> 'F') {...}
} else {
$valor = $row->pago_valor;
$rows[$index]->pago_valor = $valor;
$valorPago = $this->round($row->cod_pessoa,$this->request['ano_letivo'],$this->request['mes_referencia'],"'$concatInicio'","'$concatFim'","'$atvd'");
$round = $row->pago_valor / 30 * $valorPago[0]->round;
$rows[$index]->vlr_informado = round($round,2);
}
if(!$heards){
$heards = array_keys((array)$row);
}
endforeach;
}
if($rows){...}
}catch(Exception $th) {...}
}
}
Job Activities Per Period
<?php
namespace App\Jobs\Pit\Relatorios\Atividades;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use DB;
use Auth;
use Carbon\Carbon;
use App\Exports\Excel\CollectionExport;
use Maatwebsite\Excel\Facades\Excel;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithStrictNullComparison;
use Maatwebsite\Excel\Concerns\WithTitle;
use Maatwebsite\Excel\Concerns\FromCollection;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Facades\Storage;
use Monolog\Formatter\HtmlFormatter;
use Monolog\Formatter\LineFormatter;
use Monolog\Handler\RotatingFileHandler;
use Monolog\Logger;
use Monolog\Processor\MemoryUsageProcessor;
use Monolog\Processor\ProcessIdProcessor;
use Monolog\Processor\WebProcessor;
class AtividadePorPeriodo implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
protected $user;
protected $request;
public $timeout = 120; //O número de segundos que o trabalho pode ser executado antes do tempo limite
public $tries = 5; //O número de vezes que o trabalho pode ser tentado.
/**
* Create a new job instance.
*
* @return void
*/
public function __construct(array $request){
$this->user = Auth::user();
$this->request = $request;
$this->request['data_inicio'] = Carbon::parse($this->request['data_inicio'])->format('d/m/Y');;
$this->request['data_fim'] = Carbon::parse($this->request['data_fim'])->format('d/m/Y');
}
/**
* Execute the job.
*
* @return void
*/
public function handle(){
try{
$rows = array();
$heards = array();
$rows = DB::connection('metodo_hml')->select(" SELECT
A.COD_ATIVDE, INITCAP(NOM_ATIVDE) Atividade,
b.cod_ccusto,
(SELECT gcc.dsc_ccusto
FROM g_centro_custo gcc
WHERE gcc.cod_ccusto = b.cod_ccusto) dsc_ccusto,
decode(IND_NIVEL_ATIVDE,'T','Turma','C','Curso','Institucional') Nivel_Atividade,
DECODE(IND_TP_CALC, 'F','Valor Fixo','C','Categoria', 'H','Hora Atividade') Tipo_calculo,
decode(ind_tp_ativde,1, 'Atividade',2,'Aula',3,'Pesquisa',4,'Extensão') Tipo_atividade,
decode(IND_SUP_ADM,'S','Suplementar','A','Administracao') Classificacao_atividade,
b.cod_pessoa,
f.cod_pessoa_rm,
f.nom_func,
to_char(f.dat_demissao,'dd/mm/rrrr') dat_demissao,
to_char(af.dat_inicio_afast,'dd/mm/rrrr') dat_inicio_afast,
to_char(af.dat_termino_afast,'dd/mm/rrrr') dat_termino_afast,
to_char(b.dat_inicio,'dd/mm/rrrr') dat_inicio,
to_char(b.dat_termino,'dd/mm/rrrr') dat_termino,
B.QTD_HORAS,
B.QTD_HOR_REF,
b.vlr_atividade,
b.IND_TP_PERIDIOCIDADE,
decode(b.IND_TP_PERIDIOCIDADE,'M','Mensal','Q','Quinzenal','S','Semanal') periodicidade,
decode(b.ind_status,'A','Ativa','Inativada') situacao_atividade,
b.cod_usuario,
u.nom_usuario,
decode(b.ind_transacao,'I','Inclusao','U','Alteracao') tipo_transacao,
to_char(b.dat_transacao,'dd/mm/rrrr hh24:mi:ss') dat_transacao,
b.dsc_atividade,
b.dsc_observacao||rat.dsc_observacao dsc_observacao,
rat.num_seq_regime_ano_letivo,
rat.ind_tp_nivel_ativ_curso,
(SELECT DISTINCT b.rv_meaning
FROM cg_ref_codes b
WHERE UPPER(b.RV_LOW_VALUE) = UPPER(rat.ind_tp_nivel_ativ_curso)
AND UPPER(b.rv_domain) = 'TP_NIVEL_ATIV_CURSO') descricao,
rat.num_ordem,
rat.cod_curso,
gc.nom_curso,
rat.cod_usuario usuario_rateio,
to_char(rat.dat_inclusao,'dd/mm/rrrr') dat_inclusao_rat,
b.cod_atividade,
decode(b.cod_modalidade_ensino,'P','Presencial','D','EAD','A','Ambas') modalidade_ensino
FROM PIT_TP_ATIVIDADE a,
pit_atividade b,
vwm_populis_func f,
pit_mov_afastamento af,
s_usuario u,
PIT_ATIVIDADE_RATEIO RAT,
gc_curso gc
WHERE a.COD_ATIVDE = b.cod_ativde
AND b.cod_usuario = u.cod_usuario
AND f.cod_pessoa_pk = (SELECT max(f2.cod_pessoa_pk)
FROM vwm_populis_func f2
WHERE f2.cod_pessoa = f.cod_pessoa)
AND f.cod_pessoa_pk = af.cod_pessoa_pk
AND b.cod_atividade = rat.cod_atividade(+)
AND b.cod_pessoa = rat.cod_pessoa(+)
AND rat.cod_curso = gc.cod_curso(+)
AND (((trunc( af.dat_inicio_afast) >= :data_inicio) AND
af.dat_termino_afast is null)
OR
af.dat_termino_afast is null)
AND f.cod_pessoa = b.cod_pessoa
AND b.dat_inicio >= :data_inicio
AND b.dat_termino <= :data_termino
UNION ALL
SELECT
A.COD_ATIVDE, INITCAP(NOM_ATIVDE) Atividade,
b.cod_ccusto,
(SELECT gcc.dsc_ccusto
FROM g_centro_custo gcc
WHERE gcc.cod_ccusto = b.cod_ccusto) dsc_ccusto,
decode(IND_NIVEL_ATIVDE,'T','Turma','C','Curso','Institucional') Nivel_Atividade,
DECODE(IND_TP_CALC, 'F','Valor Fixo','C','Categoria', 'H','Hora Atividade') Tipo_calculo,
decode(ind_tp_ativde,1, 'Atividade',2,'Aula',3,'Pesquisa',4,'Extensão') Tipo_atividade,
decode(IND_SUP_ADM,'S','Suplementar','A','Administracao') Classificacao_atividade,
b.cod_pessoa,
f.cod_pessoa_rm,
f.nom_func,
to_char(f.dat_demissao,'dd/mm/rrrr') dat_demissao,
to_char(af.dat_inicio_afast,'dd/mm/rrrr') dat_inicio_afast,
to_char(af.dat_termino_afast,'dd/mm/rrrr') dat_termino_afast,
to_char(b.dat_inicio,'dd/mm/rrrr') dat_inicio,
to_char(b.dat_termino,'dd/mm/rrrr') dat_termino,
B.QTD_HORAS,
B.QTD_HOR_REF,
b.vlr_atividade,
b.IND_TP_PERIDIOCIDADE,
decode(b.IND_TP_PERIDIOCIDADE,'M','Mensal','Q','Quinzenal','S','Semanal') periodicidade,
decode(b.ind_status,'A','Ativa','Inativada') situacao_atividade,
b.cod_usuario,
u.nom_usuario,
decode(b.ind_transacao,'I','Inclusao','U','Alteracao') tipo_transacao,
to_char(b.dat_transacao,'dd/mm/rrrr hh24:mi:ss') dat_transacao,
b.dsc_atividade,
b.dsc_observacao||rat.dsc_observacao dsc_observacao,
rat.num_seq_regime_ano_letivo,
rat.ind_tp_nivel_ativ_curso,
(SELECT DISTINCT b.rv_meaning
FROM cg_ref_codes b
WHERE UPPER(b.RV_LOW_VALUE) = UPPER(rat.ind_tp_nivel_ativ_curso)
AND UPPER(b.rv_domain) = 'TP_NIVEL_ATIV_CURSO') descricao,
rat.num_ordem,
rat.cod_curso,
gc.nom_curso,
rat.cod_usuario usuario_rateio,
to_char(rat.dat_inclusao,'dd/mm/rrrr') dat_inclusao_rat,
b.cod_atividade,
decode(b.cod_modalidade_ensino,'P','Presencial','D','EAD','A','Ambas') modalidade_ensino
FROM PIT_TP_ATIVIDADE a,
pit_atividade b,
vwm_populis_func f,
pit_mov_afastamento af,
s_usuario u,
PIT_ATIVIDADE_RATEIO RAT,
gc_curso gc
WHERE a.COD_ATIVDE = b.cod_ativde
AND f.cod_pessoa = b.cod_pessoa
AND b.cod_usuario = u.cod_usuario
AND b.cod_atividade = rat.cod_atividade(+)
AND b.cod_pessoa = rat.cod_pessoa(+)
AND rat.cod_curso = gc.cod_curso(+)
AND f.cod_pessoa_pk = (SELECT max(f2.cod_pessoa_pk)
FROM vwm_populis_func f2
WHERE f2.cod_pessoa = f.cod_pessoa)
AND f.cod_pessoa_pk = af.cod_pessoa_pk
AND trunc(af.dat_inicio_afast) >= :data_inicio
AND trunc(nvl(af.dat_termino_afast, sysdate )) <= :data_termino
AND b.dat_inicio >= :data_inicio
AND b.dat_termino <= :data_termino
UNION ALL
SELECT
A.COD_ATIVDE, INITCAP(NOM_ATIVDE) Atividade,
b.cod_ccusto,
(SELECT gcc.dsc_ccusto
FROM g_centro_custo gcc
WHERE gcc.cod_ccusto = b.cod_ccusto) dsc_ccusto,
decode(IND_NIVEL_ATIVDE,'T','Turma','C','Curso','Institucional') Nivel_Atividade,
DECODE(IND_TP_CALC, 'F','Valor Fixo','C','Categoria', 'H','Hora Atividade') Tipo_calculo,
decode(ind_tp_ativde,1, 'Atividade',2,'Aula',3,'Pesquisa',4,'Extensão') Tipo_atividade,
decode(IND_SUP_ADM,'S','Suplementar','A','Administracao') Classificacao_atividade,
b.cod_pessoa,
f.cod_pessoa_rm,
f.nom_func,
to_char(f.dat_demissao,'dd/mm/rrrr') dat_demissao,
null dat_inicio_afast,
null dat_termino_afast,
to_char(b.dat_inicio,'dd/mm/rrrr') dat_inicio,
to_char(b.dat_termino,'dd/mm/rrrr') dat_termino,
B.QTD_HORAS,
B.QTD_HOR_REF,
b.vlr_atividade,
b.IND_TP_PERIDIOCIDADE,
decode(b.IND_TP_PERIDIOCIDADE,'M','Mensal','Q','Quinzenal','S','Semanal') periodicidade,
decode(b.ind_status,'A','Ativa','Inativada') situacao_atividade,
b.cod_usuario,
u.nom_usuario,
decode(b.ind_transacao,'I','Inclusao','U','Alteracao') tipo_transacao,
to_char(b.dat_transacao,'dd/mm/rrrr hh24:mi:ss') dat_transacao,
b.dsc_atividade,
b.dsc_observacao||rat.dsc_observacao dsc_observacao,
rat.num_seq_regime_ano_letivo,
rat.ind_tp_nivel_ativ_curso,
(SELECT DISTINCT b.rv_meaning
FROM cg_ref_codes b
WHERE UPPER(b.RV_LOW_VALUE) = UPPER(rat.ind_tp_nivel_ativ_curso)
AND UPPER(b.rv_domain) = 'TP_NIVEL_ATIV_CURSO') descricao,
rat.num_ordem,
rat.cod_curso,
gc.nom_curso,
rat.cod_usuario usuario_rateio,
to_char(rat.dat_inclusao,'dd/mm/rrrr') dat_inclusao_rat,
b.cod_atividade,
decode(b.cod_modalidade_ensino,'P','Presencial','D','EAD','A','Ambas') modalidade_ensino
FROM PIT_TP_ATIVIDADE a,
pit_atividade b,
vwm_populis_func f,
s_usuario u,
PIT_ATIVIDADE_RATEIO RAT,
gc_curso gc
WHERE a.COD_ATIVDE = b.cod_ativde
AND f.cod_pessoa = b.cod_pessoa
AND b.cod_usuario = u.cod_usuario
AND b.cod_atividade = rat.cod_atividade(+)
AND b.cod_pessoa = rat.cod_pessoa(+)
AND rat.cod_curso = gc.cod_curso(+)
AND f.cod_pessoa_pk = (SELECT max(f2.cod_pessoa_pk)
FROM vwm_populis_func f2
WHERE f2.cod_pessoa = f.cod_pessoa)
AND 0 = (SELECT count(*)
FROM pit_mov_afastamento f3
WHERE f3.cod_pessoa_pk = f.cod_pessoa_pk
AND trunc(f3.dat_inicio_afast) >= :data_inicio
AND ( f3.dat_termino_afast IS NULL or trunc(f3.dat_termino_afast) <= :data_termino))
AND b.dat_inicio >= :data_inicio
AND b.dat_termino <= :data_termino
ORDER BY 7,14,15",
[
'data_inicio' => $this->request['data_inicio'],
'data_termino' => $this->request['data_fim']
]);
foreach ($rows as $index => $row):
if(!$heards){
$heards = array_keys((array)$row);
}
endforeach;
if($rows){...}
}catch(Exception $th) {...}
}
}
Did you test the Sqls directly on a database client to see if they work? Is your date filter correct? It seems to me that you are trying to format the input to d/m/Y and when testing with the database, it may not work
– Ademir Mazer Jr - Nuno
@Ademirmazerjr-Nuno I tested in the Oracle client and it worked, both with dates in the format (d/m/Y) or (d-m-Y)
– Sales