public static function abrirCaixaPedido($id_caixa, $id_empreendimento)
 {
     $AberturaCaixaDao = new AberturaCaixaDao();
     $AberturaCaixaTO = new AberturaCaixaTO();
     $ConfiguracaoDao = new ConfiguracaoDao();
     $caixa_aberto = $AberturaCaixaDao->caixaAberto(array('abt.id_caixa' => $id_caixa, "abt.id_empreendimento" => $id_empreendimento, "date_format(abt.dta_abertura,'%Y-%m-%d')" => array('exp' => "< '" . date('Y-m-d') . "' AND abt.dta_fechamento IS NULL")));
     if ($caixa_aberto) {
         $MovimentacaoCaixaDao = new MovimentacaoCaixaDao();
         $configuracao = $ConfiguracaoDao->getConfiguracoes($id_empreendimento);
         $result = $MovimentacaoCaixaDao->fechamentoCaixa($caixa_aberto['id'], $configuracao['id_conta_bancaria_padrao_fechamento_automatico'], date('Y-m-d 23:59:59', strtotime($caixa_aberto['dta_abertura'])));
         if (!$result) {
             Flight::halt(500, 'Erro ao fechar o caixa');
         }
     }
     $caixa_aberto = $AberturaCaixaDao->caixaAberto(array('abt.id_caixa' => $id_caixa, "abt.id_empreendimento" => $id_empreendimento, "date_format(abt.dta_abertura,'%Y-%m-%d')" => array('exp' => "='" . date('Y-m-d') . "' AND abt.dta_fechamento IS NULL")));
     $config = $ConfiguracaoDao->getConfiguracoes($id_empreendimento);
     if ($caixa_aberto) {
         $ConfiguracaoDao = new ConfiguracaoDao();
         Flight::response()->status(200)->header('Content-Type', 'application/json')->write(json_encode(array_merge($caixa_aberto, $config)))->send();
     }
     $AberturaCaixaTO->id_caixa = $id_caixa;
     $AberturaCaixaTO->dta_fechamento = NULL;
     $AberturaCaixaTO->id_empreendimento = $id_empreendimento;
     if ($AberturaCaixaDao->abrirCaixa($AberturaCaixaTO)) {
         $caixa_aberto = $AberturaCaixaDao->caixaAberto(array('abt.id_caixa' => $id_caixa, "abt.id_empreendimento" => $id_empreendimento, "date_format(abt.dta_abertura,'%Y-%m-%d')" => array('exp' => "='" . date('Y-m-d') . "' AND abt.dta_fechamento IS NULL")));
         Flight::response()->status(201)->header('Content-Type', 'application/json')->write(json_encode(array_merge($caixa_aberto, $config)))->send();
     } else {
         Flight::response()->status(404)->header('Content-Type', 'application/json')->write(json_encode(array('msg' => 'Ocorreu um erro inesperado ao abrir o caixa')))->send();
     }
 }
 public static function fechamentoCaixa($id_abertura_caixa, $id_conta_bancaria, $dta_fechamento)
 {
     $MovimentacaoCaixaDao = new MovimentacaoCaixaDao();
     $result = $MovimentacaoCaixaDao->fechamentoCaixa($id_abertura_caixa, $id_conta_bancaria, $dta_fechamento);
     if ($result) {
         Flight::halt(201);
     } else {
         Flight::halt(500, 'Ocorreu um erro ao fechar o caixa');
     }
 }