public function relatoriosAction()
 {
     if ($this->request->isPost()) {
         $array = $this->request->getPost();
     } else {
         $array = array();
     }
     $pedidos = new Pedidos();
     $this->view->vendas = $pedidos->getEstatisticasVenda($array);
     $this->view->mais_vendidos = PedidoItens::getMaisVendidos(30, $array);
     $this->view->pedidos = Pedidos::getEstatisticas('pedido', $array);
     $this->view->estados = Pedidos::getEstatisticas('estado', $array);
     $this->view->pagamento = Pedidos::getEstatisticas('pagamento', $array);
 }
 protected function verificaStatus($pedido_id, $redirect = true)
 {
     $pedido = Pedidos::findFirst('id = ' . $pedido_id);
     if ($pedido->status_id == 3) {
         $tipo = 'pedidoAprovado';
         $cart->destroy();
         $this->helper->mailer->getHelper(array('pedido_id' => $pedido_id, 'tipo' => $tipo));
         if ($redirect) {
             return $this->response->redirect("checkout/confirmacao/{$pedido_id}");
         }
     } else {
         if ($pedido->status_id == 6 || $pedido->status_id == 7) {
             $tipo = 'pedidoCancelado';
             $this->helper->mailer->getHelper(array('pedido_id' => $pedido_id, 'tipo' => $tipo));
             if ($redirect) {
                 $this->flashSession->error('Pedido CANCELADO/NÃO AUTORIZADO tente com uma nova forma de pagamento');
                 return $this->response->redirect("checkout");
             }
         } else {
             $this->cart->destroy();
             if ($redirect) {
                 return $this->response->redirect("checkout/confirmacao/{$pedido_id}");
             }
         }
     }
 }
 public function updateAction()
 {
     $pedido = Pedidos::findFirst("id = {$this->request->getPost('id')}");
     $pedido->status_id = $this->request->getPost('status');
     if ($pedido->save()) {
         $this->response->setContent(json_encode(array('status' => true, 'mensagem' => 'Requisição realizada com sucesso')));
     } else {
         $this->response->setContent(json_encode(array('status' => false, 'mensagem' => 'A solicitação não pode ser completada, tente novamente')));
     }
     return $this->response;
 }
 public static function init($retorno, $pedido)
 {
     $pedido = Pedidos::findFirst("id={$pedido}");
     if (isset($retorno->autorizacao) && $retorno->autorizacao->codigo == 6) {
         $pedido->status_id = 3;
     } else {
         $pedido->status_id = 6;
     }
     $pedido->tid = "{$retorno->tid}";
     $pedido->save();
 }
 public static function getMaisVendidos($limit = 10, $periodo = array())
 {
     $produtos = self::sum(array("column" => "quantidade", "group" => "produto_id,pedido_id", "order" => "sumatory DESC", "limit" => $limit));
     $arr = array();
     for ($i = 0; $i < count($produtos); $i++) {
         if (!empty($periodo)) {
             $pedido = Pedidos::findFirst($produtos[$i]->pedido_id)->toArray();
             if ($pedido['data'] >= $periodo['inicial'] . ' 00:00:00' && $pedido['data'] <= $periodo['final'] . ' 23:59:59') {
                 $arr[$i]['produto'] = Produtos::findById($produtos[$i]->produto_id)->nome;
                 $arr[$i]['quantidade'] = $produtos[$i]->sumatory;
             }
         } else {
             $arr[$i]['produto'] = Produtos::findById($produtos[$i]->produto_id)->nome;
             $arr[$i]['quantidade'] = $produtos[$i]->sumatory;
         }
     }
     return $arr;
 }
 public static function init($retorno, $pedido)
 {
     $pedido = Pedidos::findFirst("id={$pedido}");
     if ($retorno->status == 1 || $retorno->status == 2 || $retorno->status == 5) {
         $pedido->status_id = 2;
     } else {
         if ($retorno->status == 3 || $retorno->status == 4) {
             $pedido->status_id = 3;
         } else {
             $pedido->status_id = 7;
         }
     }
     $pedido->tid = "{$retorno->code}";
     if (isset($retorno->paymentLink)) {
         $pedido->link = "{$retorno->paymentLink}";
         $pedido->meio_pagamento = "{$retorno->paymentMethod->type}";
     }
     $pedido->save();
 }
 public static function retornoPagseguro($dados)
 {
     $widget = Widgets::findFisrt('id = 3');
     $opcoes = unserialize($widget->opcoes);
     $url = 'https://ws.pagseguro.uol.com.br/v2/transactions/notifications/' . $dados['notificationCode'] . '?email=' . $opcoes['email'] . '&token=' . $opcoes['token'];
     $curl = curl_init($url);
     curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
     curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
     $retorno = curl_exec($curl);
     curl_close($curl);
     if ($retorno == 'Unauthorized') {
         return false;
         //Mantenha essa linha
     }
     $retorno = simplexml_load_string($retorno);
     $pedido = Pedidos::findFirst('id = ' . $retorno->reference);
     $pedido->status_id = self::deParaStatus($retorno->status, 3);
     $pedido->save();
     if ($pedido->status_id == 3) {
         self::subtraiEstoque($pedido->id);
     }
     return $pedido->pedido_id;
 }
 private static function setDados($post)
 {
     $base = new BaseHelper();
     $pedido = Pedidos::findFirst("id = " . $post['pedido_id'] . "");
     $endereco = Enderecos::findFirst("relacao = 'pedidos' and id_relacao = " . $post['pedido_id']);
     $usuario = Usuarios::findFirst('id = ' . $pedido->usuario_id);
     $cliente = Clientes::findFirst('usuario_id =' . $pedido->usuario_id);
     $fone = explode(')', $cliente->telefone);
     $dados['email'] = self::$email;
     $dados['token'] = self::$token;
     $dados['paymentMode'] = 'default';
     $dados['receiverEmail'] = self::$email;
     $dados['currency'] = self::$currency;
     $dados['reference'] = $post['pedido_id'];
     $dados['notificationURL'] = $base->url_base . 'checkout/notificacao/pagseguro';
     //Itens
     $itens = PedidoItens::find("pedido_id = " . $post['pedido_id']);
     foreach ($itens as $key => $value) {
         $indice = $key + 1;
         $dados["itemId{$indice}"] = $value->produto_id;
         $dados["itemDescription{$indice}"] = Produtos::findById($value->produto_id)->nome;
         if ($post['paymentMethod'] == 'ONLINE_DEBIT' || $post['paymentMethod'] == 'BOLETO') {
             $dados["itemAmount{$indice}"] = $base->setDesconto($value->valor, 10);
         } else {
             $dados["itemAmount{$indice}"] = $value->valor;
         }
         $dados["itemQuantity{$indice}"] = $value->quantidade;
     }
     // Informações do pagamento
     if ($post['creditCardToken'] != '') {
         $dados['paymentMethod'] = 'creditCard';
         $dados['creditCardToken'] = $post['creditCardToken'];
         $dados['installmentQuantity'] = $post['parcelas'];
         $dados['installmentValue'] = number_format($post['installmentValue'], 2, '.', '');
         $dados['creditCardHolderName'] = $post['nome_titular'];
         $dados['creditCardHolderBirthDate'] = $post['data_nascimento'];
         $dados['creditCardHolderCPF'] = $base->limpaString($post['cpf']);
         $dados['creditCardHolderAreaCode'] = str_replace('(', '', $fone[0]);
         $dados['creditCardHolderPhone'] = str_replace('-', '', $fone[1]);
         $dados['billingAddressPostalCode'] = str_replace('-', '', $endereco->cep);
         $dados['billingAddressStreet'] = $endereco->logradouro;
         $dados['billingAddressNumber'] = $endereco->numero;
         $dados['billingAddressComplement'] = $endereco->complemento;
         $dados['billingAddressDistrict'] = $endereco->bairro;
         $dados['billingAddressCity'] = $endereco->Cidade->nome;
         $dados['billingAddressState'] = $endereco->Estado->sigla;
         $dados['billingAddressCountry'] = 'BRA';
     } else {
         if ($post['paymentMethod'] == 'ONLINE_DEBIT') {
             $dados['paymentMethod'] = 'eft';
             $dados['bankName'] = $post['bankName'] == 'BANCO_BRASIL' ? 'bancodobrasil' : strtolower($post['bankName']);
         } else {
             $dados['paymentMethod'] = 'boleto';
         }
     }
     //Hash
     $dados['senderHash'] = $post['hash'];
     //Dados do Comprador
     $dados['extraAmount'] = $pedido->frete;
     $dados['senderEmail'] = self::$producao ? $usuario->email : '*****@*****.**';
     $dados['senderName'] = $usuario->nome;
     if ($cliente->pessoa_juridica) {
         $dados['senderCNPJ'] = $cliente->documento;
     } else {
         $dados['senderCPF'] = $cliente->documento;
     }
     $dados['senderAreaCode'] = str_replace('(', '', $fone[0]);
     $dados['senderPhone'] = str_replace('-', '', $fone[1]);
     // Dados de endereco
     $dados['shippingAddressStreet'] = $endereco->logradouro;
     $dados['shippingAddressNumber'] = $endereco->numero;
     $dados['shippingAddressComplement'] = $endereco->complemento;
     $dados['shippingAddressDistrict'] = $endereco->bairro;
     $dados['shippingAddressPostalCode'] = str_replace('-', '', $endereco->cep);
     $dados['shippingAddressCity'] = $endereco->Cidade->nome;
     $dados['shippingAddressState'] = $endereco->Estado->sigla;
     $dados['shippingAddressCountry'] = 'BRA';
     return $dados;
 }
 public function detalhesAction($id)
 {
     $this->view->selecionado == 'Meus Pedidos';
     $this->view->pedido = Pedidos::findFirst("id = {$id}");
     $this->view->pedido_itens = PedidoItens::find("pedido_id = {$id}");
     $this->view->endereco = Enderecos::findFirst("id_relacao = {$id} and relacao = 'pedidos'");
 }