Skip to content

Instantly share code, notes, and snippets.

Created August 5, 2015 01:45
Show Gist options
  • Save anonymous/0ba8fad0a765c67913a6 to your computer and use it in GitHub Desktop.
Save anonymous/0ba8fad0a765c67913a6 to your computer and use it in GitHub Desktop.
<?php
public function relatorio_jornada() {
if ($this->request->is('post')) {
$novo = $this->request->data;
$cond = array();
$dt_inicio = $this->DtBrEn($novo['Jornada']['dt_inicio']);
$dt_fim = $this->DtBrEn($novo['Jornada']['dt_final']);
$cond['$or'][]['evento'] = array('$regex' => new MongoRegex('R/i'));
$cond['$or'][]['evento'] = array('$regex' => new MongoRegex('D/i'));
$cond['id_motorista'] = (int) $novo['Jornada']['motorista_id'];
$cond['dt_inicio']['$gte'] = new MongoDate(strtotime($dt_inicio));
$cond['dt_final']['$lte'] = new MongoDate(strtotime($dt_fim));
$jornadas = $this->Mongo->db->jornadas->find($cond)->sort(array('dt_inicio' => 1));
$jornadas = $this->Mongo->paraArray($jornadas);
$trabalho_dia = array();
$total_mes = array();
foreach ($jornadas as $k => $value) {
if ($k == 0) {
$dia = date('j', $value['dt_inicio']->sec);
}
if ($value['evento'] == 'P-[IN] Interjornada' || $value['evento'] == 'P-[DS] Descanso Semanal') {
$dia++;
}
$tempo = $value['dt_final']->sec - $value['dt_inicio']->sec;
if ($value['evento'] == 'R-[TE] Tempo de Espera') {
(!empty($trabalho_dia[$dia]['tempo_espera']['total'])) ? $trabalho_dia[$dia]['tempo_espera']['total'] += $tempo : $trabalho_dia[$dia]['tempo_espera']['total'] = $tempo;
(!empty($trabalho_dia[$dia]['tempo_espera']['total'])) ? $trabalho_dia[$dia]['tempo_espera']['inicio'] = date('H:i', $value['dt_inicio']->sec) : '';
(!empty($total_mes['tempo_espera'])) ? $total_mes['tempo_espera'] += $tempo : $total_mes['tempo_espera'] = $tempo;
}
else if ($value['evento'] == 'R-[TR] Tempo de Reserva') {
(!empty($trabalho_dia[$dia]['tempo_reserva']['total'])) ? $trabalho_dia[$dia]['tempo_reserva']['total'] += $tempo : $trabalho_dia[$dia]['tempo_reserva']['total'] = $tempo;
(!empty($trabalho_dia[$dia]['tempo_reserva']['total'])) ? $trabalho_dia[$dia]['tempo_reserva']['inicio'] = date('H:i', $value['dt_inicio']->sec) : '';
(!empty($total_mes['tempo_reserva'])) ? $total_mes['tempo_reserva'] += $tempo : $total_mes['tempo_reserva'] = $tempo;
}
else if ($value['evento'] == 'R-[CE] Tempo de Coleta ou Entrada') {
(!empty($trabalho_dia[$dia]['tempo_coleta']['total'])) ? $trabalho_dia[$dia]['tempo_coleta']['total'] += $tempo : $trabalho_dia[$dia]['tempo_coleta']['total'] = $tempo;
(!empty($trabalho_dia[$dia]['tempo_coleta']['total'])) ? $trabalho_dia[$dia]['tempo_coleta']['inicio'] = date('H:i', $value['dt_inicio']->sec) : '';
(!empty($total_mes['tempo_coleta'])) ? $total_mes['tempo_coleta'] += $tempo : $total_mes['tempo_coleta'] = $tempo;
}
else if ($value['evento'] == 'R-[PA] Parado Acidente') {
(!empty($trabalho_dia[$dia]['parado_acidente']['total'])) ? $trabalho_dia[$dia]['parado_acidente']['total'] += $tempo : $trabalho_dia[$dia]['parado_acidente']['total'] = $tempo;
(!empty($trabalho_dia[$dia]['parado_acidente']['total'])) ? $trabalho_dia[$dia]['parado_acidente']['inicio'] = date('H:i', $value['dt_inicio']->sec) : '';
(!empty($total_mes['parado_acidente'])) ? $total_mes['parado_acidente'] += $tempo : $total_mes['parado_acidente'] = $tempo;
}
else if ($value['evento'] == 'R-[PA] Parado Fiscalização') {
(!empty($trabalho_dia[$dia]['parado_fiscalizacao']['total'])) ? $trabalho_dia[$dia]['parado_fiscalizacao']['total'] += $tempo : $trabalho_dia[$dia]['parado_fiscalizacao']['total'] = $tempo;
(!empty($trabalho_dia[$dia]['parado_fiscalizacao']['total'])) ? $trabalho_dia[$dia]['parado_fiscalizacao']['inicio'] = date('H:i', $value['dt_inicio']->sec) : '';
(!empty($total_mes['parado_fiscalizacao'])) ? $total_mes['parado_fiscalizacao'] += $tempo : $total_mes['parado_fiscalizacao'] = $tempo;
}
else if ($value['evento'] == 'D-[IT] Intrajornada') {
(!empty($trabalho_dia[$dia]['intrajornada']['total'])) ? $trabalho_dia[$dia]['intrajornada']['total'] += $tempo : $trabalho_dia[$dia]['intrajornada']['total'] = $tempo;
(!empty($trabalho_dia[$dia]['intrajornada']['total'])) ? $trabalho_dia[$dia]['intrajornada']['inicio'] = date('H:i', $value['dt_inicio']->sec) : '';
(!empty($total_mes['intrajornada'])) ? $total_mes['intrajornada'] += $tempo : $total_mes['intrajornada'] = $tempo;
}
else if ($value['evento'] == 'R-[AD] A Disposição') {
(!empty($trabalho_dia[$dia]['disposicao']['total'])) ? $trabalho_dia[$dia]['disposicao']['total'] += $tempo : $trabalho_dia[$dia]['disposicao']['total'] = $tempo;
(!empty($trabalho_dia[$dia]['disposicao']['total'])) ? $trabalho_dia[$dia]['disposicao']['inicio'] = date('H:i', $value['dt_inicio']->sec) : '';
(!empty($total_mes['disposicao'])) ? $total_mes['disposicao'] += $tempo : $total_mes['disposicao'] = $tempo;
}
}
if (empty($trabalho_dia)) {
$this->Session->setFlash('Não há nenhum evento de Jornada neste mês.');
$this->redirect('/planejamentos/relatorio_jornada');
}
$this->set('jornadas', $trabalho_dia);
$this->set('mensal', $total_mes);
}
$this->loadModel('Motorista');
$cond_motorista = array();
$cond_motorista['conditions']['Motorista.ativo'] = 1;
$this->set('motoristas', $this->Motorista->find('list', $cond_motorista));
}
?>
Segue o teste:
Tabelas de Saídas:
Saída1
Data | Produto | Qtd (campo qtd)
06/15 | Produto1 | 8
06/15 | Produto2 | 15
...
Saída2 (Quantos produtos foram vendidos?)
Produto | Total (soma do campo qtd)
Produto1 | 8
Produto2 | 10
...
Saída3 (somente 06/15 e 07/15) (Quantas vendas por mês?)
Data | Total (soma do campo qtd)
06/15 | 13
07/15 | 11
...
$teste = array();
$teste['06/15']['produtos'][0]['nome'] = "Produto 1";
$teste['06/15']['produtos'][0]['qtd'] = 8;
$teste['06/15']['produtos'][1]['nome'] = "Produto 2";
$teste['06/15']['produtos'][1]['qtd'] = 5;
$teste['07/15']['produtos'][0]['nome'] = "Produto 3";
$teste['07/15']['produtos'][0]['qtd'] = 4;
$teste['07/15']['produtos'][1]['nome'] = "Produto 4";
$teste['07/15']['produtos'][1]['qtd'] = 2;
$teste['07/15']['produtos'][2]['nome'] = "Produto 2";
$teste['07/15']['produtos'][2]['qtd'] = 5;
$teste['08/15']['produtos'][0]['nome'] = "Produto 5";
$teste['08/15']['produtos'][0]['qtd'] = 7;
$teste['09/15']['produtos'][0]['nome'] = "Produto 6";
$teste['09/15']['produtos'][0]['qtd'] = 8;
$teste['10/15']['produtos'][0]['nome'] = "Produto 7";
$teste['10/15']['produtos'][0]['qtd'] = 23;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment