public function getRelRomaneio($id_pedido_venda)
 {
     $id_empreendimento;
     $pedido = $this->getPedidoVenda($id_pedido_venda);
     $sql = "SELECT\n\t\t\t\t     tipv.id AS id_item_pedido, tpv.id_empreendimento,tp.id AS id_produto,tcp.id AS id_cor,tt.id  AS id_tamanho,tcp.nome_cor,tp.nome AS nome_produto,tt.nome_tamanho,tipv.tipo_produto AS tipo,tipv.qtd,tipv.flg_brinde,tipv.id_agrupamento_insumos,tipv.config_grad,tp.img,tipv.tipo_base,tipv.modelo_base\n\t\t\t\tFROM tbl_pedido_venda AS tpv \n\t\t\t\tINNER JOIN tbl_itens_pedido_venda AS tipv ON tpv.id = tipv.id_pedido_venda\n\t\t\t\tINNER JOIN tbl_produtos AS tp ON tipv.id_produto = tp.id\n\t\t\t\tLEFT JOIN tbl_cor_produto AS tcp ON tp.id_cor = tcp.id\n\t\t\t\tLEFT JOIN tbl_tamanho AS tt ON tp.id_tamanho = tt.id\n\t\t\t\tWHERE tpv.id = {$id_pedido_venda}";
     $select = $this->conn->prepare($sql);
     if ($select->execute() && $select->rowCount() > 0) {
         $produtos = parse_arr_values($select->fetchAll(PDO::FETCH_ASSOC), 'all');
         $insumos_agrupados = array();
         foreach ($produtos as $keyPrd => $produto) {
             if (is_file(CAMINHO_UPLOAD_IMG_PRODUTO . $produto['img'])) {
                 $produto['img'] = "assets/imagens/produtos/" . $produto['img'];
             } else {
                 $produto['img'] = null;
             }
             if (empty($id_empreendimento)) {
                 $id_empreendimento = $produto['id_empreendimento'];
             }
             if (!isset($insumos_agrupados[$produto['id_agrupamento_insumos']])) {
                 $insumos_agrupados[$produto['id_agrupamento_insumos']] = array('insumos' => array(), 'genero' => null, 'flg_brinde' => $produto['flg_brinde']);
             }
             $insumos_agrupados[$produto['id_agrupamento_insumos']]['insumos'][] = $produto;
             if ($produto['tipo'] == 'base') {
                 $nome_produto = 'Chinelo Personalizado ${sexo} Base ' . $produto['nome_tamanho'] . ' ' . $produto['nome_cor'];
                 if (isset($insumos_agrupados[$produto['id_agrupamento_insumos']]['nome_produto'])) {
                     $nome_produto = $insumos_agrupados[$produto['genero']] == "masculino" ? str_replace('${sexo}', "feminino", $nome_produto) : str_replace('${sexo}', "masculino", $nome_produto);
                     $insumos_agrupados[$produto['id_agrupamento_insumos']]['nome_produto'] = $nome_produto . " " . $insumos_agrupados[$produto['id_agrupamento_insumos']]['nome_produto'];
                 } else {
                     $insumos_agrupados[$produto['id_agrupamento_insumos']]['nome_produto'] = $nome_produto;
                 }
                 $insumos_agrupados[$produto['id_agrupamento_insumos']]['qtd'] = (int) $produto['qtd'];
                 $insumos_agrupados[$produto['id_agrupamento_insumos']]['nome_tamanho'] = $produto['nome_tamanho'];
                 $insumos_agrupados[$produto['id_agrupamento_insumos']]['id_tamanho'] = $produto['id_tamanho'];
                 $insumos_agrupados[$produto['id_agrupamento_insumos']]['config_grad'] = $produto['config_grad'];
                 $EstampaBasePedidoDao = new EstampaBasePedidoDao();
                 $coresEstampa = $EstampaBasePedidoDao->getEstampas($produto['id_item_pedido']);
                 $insumos_agrupados[$produto['id_agrupamento_insumos']]['coresEstampa'] = $coresEstampa ? $coresEstampa : array();
             } else {
                 if ($produto['tipo'] == 'tira_masculina') {
                     if (isset($insumos_agrupados[$produto['id_agrupamento_insumos']]['nome_produto'])) {
                         $insumos_agrupados[$produto['id_agrupamento_insumos']]['nome_produto'] = str_replace('${sexo}', 'Masculino', $insumos_agrupados[$produto['id_agrupamento_insumos']]['nome_produto']);
                         $insumos_agrupados[$produto['id_agrupamento_insumos']]['nome_produto'] .= " Tira " . $produto['nome_cor'];
                     } else {
                         $insumos_agrupados[$produto['id_agrupamento_insumos']]['nome_produto'] .= " Tira " . $produto['nome_cor'];
                     }
                     $insumos_agrupados[$produto['id_agrupamento_insumos']]['genero'] = 'masculino';
                 } else {
                     if ($produto['tipo'] == 'tira_feminina') {
                         if (isset($insumos_agrupados[$produto['id_agrupamento_insumos']]['nome_produto'])) {
                             $insumos_agrupados[$produto['id_agrupamento_insumos']]['nome_produto'] = str_replace('${sexo}', 'Feminino', $insumos_agrupados[$produto['id_agrupamento_insumos']]['nome_produto']);
                             $insumos_agrupados[$produto['id_agrupamento_insumos']]['nome_produto'] .= " Tira " . $produto['nome_cor'];
                         } else {
                             $insumos_agrupados[$produto['id_agrupamento_insumos']]['nome_produto'] .= " Tira " . $produto['nome_cor'];
                         }
                         $insumos_agrupados[$produto['id_agrupamento_insumos']]['genero'] = 'feminino';
                     }
                 }
             }
         }
         $detalhado = array();
         $consolidado = array();
         $pedido['qtd_total'] = 0;
         foreach ($insumos_agrupados as $key => $value) {
             $pedido['qtd_total'] += (int) $value['qtd'];
             $detalhado[] = $value;
             $not_exists = true;
             $base_x_tira = array();
             foreach ($value['insumos'] as $insumo) {
                 if ($insumo['tipo'] == 'tira_masculina') {
                     $base_x_tira['tira']['masculina']['nome_cor'] = $insumo['nome_cor'];
                     $base_x_tira['tira']['masculina']['id_cor'] = $insumo['id_cor'];
                 } else {
                     if ($insumo['tipo'] == 'tira_feminina') {
                         $base_x_tira['tira']['feminina']['nome_cor'] = $insumo['nome_cor'];
                         $base_x_tira['tira']['feminina']['id_cor'] = $insumo['id_cor'];
                     } else {
                         if ($insumo['tipo'] == 'base') {
                             $base_x_tira['base']['nome_cor'] = $insumo['nome_cor'];
                             $base_x_tira['tira']['id_cor'] = $insumo['id_cor'];
                         }
                     }
                 }
             }
             $pedido['base_tira_estampas'][] = $base_x_tira;
             foreach ($consolidado as $c_key => $c_value) {
                 if ((int) $c_value['id_tamanho'] == (int) $value['id_tamanho']) {
                     $not_exists = false;
                     $consolidado[$c_key]['id_tamanho'] = $value['id_tamanho'];
                     $consolidado[$c_key]['nome_tamanho'] = $value['nome_tamanho'];
                     if ($value['genero'] == 'masculino') {
                         $consolidado[$c_key]['qtd_mas'] += (int) $value['qtd'];
                     } else {
                         $consolidado[$c_key]['qtd_fem'] += (int) $value['qtd'];
                     }
                 }
             }
             if ($not_exists) {
                 $consolidado[] = array('id_tamanho' => $value['id_tamanho'], 'nome_tamanho' => $value['nome_tamanho'], 'config_grad' => $value['config_grad'], 'qtd_mas' => $value['genero'] == 'masculino' ? $value['qtd'] : 0, 'qtd_fem' => $value['genero'] == 'feminino' ? $value['qtd'] : 0);
             }
         }
         $sqlMovCaixa = "SELECT id_abertura_caixa FROM tbl_movimentacao_caixa \n\t\t\t\t\t\tWHERE id_pedido_venda = {$id_pedido_venda} LIMIT 1";
         $selMovCaixa = $this->conn->prepare($sqlMovCaixa);
         $movimentacoes = array();
         if ($selMovCaixa->execute()) {
             $id_abertura_caixa = $selMovCaixa->fetch(PDO::FETCH_ASSOC);
             $id_abertura_caixa = $id_abertura_caixa['id_abertura_caixa'];
             $MovimentacaoCaixaDao = new MovimentacaoCaixaDao();
             $movimentacoes = $MovimentacaoCaixaDao->getMovimentacoes($id_abertura_caixa, array('mov.id_pedido_venda' => $id_pedido_venda));
         }
         $ItemPedidoVendaDao = new ItemPedidoVendaDao();
         $pedido_gerado = $this->getPedidoMaster($id_pedido_venda);
         $itens = $ItemPedidoVendaDao->getItens($pedido_gerado['id'], null, null);
         //Flight::json(array('pedido'=>$pedido,'detalhado'=>$detalhado,'consolidado'=>$consolidado,'itens'=>$itens,'insumos'=>$produtos));die;
         $saida = array('pedido' => $pedido, 'detalhado' => $detalhado, 'consolidado' => $consolidado, 'itens' => $itens, 'movimentacoes' => $movimentacoes);
         return $saida;
     } else {
         return false;
     }
 }
 public static function updatePedido()
 {
     $pedido_venda = $_POST['pedido_venda'];
     $itens = $pedido_venda['itens'];
     $chinelos_gerados = $pedido_venda['chinelos_gerados'];
     $pagamentos = isset($_POST['pagamentos']) ? $_POST['pagamentos'] : array();
     $id_empreendimento = $pedido_venda['id_empreendimento'];
     $estampas = isset($pedido_venda['estampas']) ? $pedido_venda['estampas'] : array();
     $PedidoVendaDao = new PedidoVendaDao();
     $PedidoVendaTO = new PedidoVendaTO();
     $ItemPedidoVendaDao = new ItemPedidoVendaDao();
     $ItemPedidoVendaTO = new ItemPedidoVendaTO();
     $PedidoVendaTO->id = isset($pedido_venda['id']) ? $pedido_venda['id'] : NULL;
     $PedidoVendaTO->id_usuario = isset($pedido_venda['id_usuario']) ? $pedido_venda['id_usuario'] : NULL;
     $PedidoVendaTO->id_cliente = is_numeric($pedido_venda['id_cliente']) ? $pedido_venda['id_cliente'] : NULL;
     $PedidoVendaTO->venda_confirmada = 0;
     $PedidoVendaTO->id_empreendimento = isset($pedido_venda['id_empreendimento']) ? $pedido_venda['id_empreendimento'] : '';
     $PedidoVendaTO->id_status_pedido = isset($pedido_venda['id_status_pedido']) ? $pedido_venda['id_status_pedido'] : NULL;
     $PedidoVendaTO->observacao = isset($pedido_venda['observacao']) ? $pedido_venda['observacao'] : NULL;
     $PedidoVendaTO->dta_entrega = isset($pedido_venda['dta_entrega']) ? $pedido_venda['dta_entrega'] : NULL;
     $PedidoVendaTO->canal_venda = isset($pedido_venda['canal_venda']) ? $pedido_venda['canal_venda'] : NULL;
     $PedidoVendaTO->dta_venda = isset($pedido_venda['dta_venda']) ? $pedido_venda['dta_venda'] : NULL;
     $ItemPedidoVendaDao->delete($PedidoVendaTO->id);
     $PedidoVendaDao->updatePedido($PedidoVendaTO);
     $id_pedido_venda = $pedido_venda['id'];
     self::gravarMovimentacoes($pagamentos, $id_pedido_venda, $PedidoVendaTO->id_cliente, $PedidoVendaTO->id_empreendimento);
     $EstampaBasePedidoTO = new EstampaBasePedidoTO();
     $EstampaBasePedidoDao = new EstampaBasePedidoDao();
     foreach ($estampas as $key_arr => $arr) {
         foreach ($arr as $key_est => $estampa) {
             $EstampaBasePedidoTO->id_cor = $estampa['id_cor'];
             $EstampaBasePedidoTO->dsc_local = $estampa['dsc_local'];
             try {
                 $id_estampa_base_pedido = $EstampaBasePedidoDao->saveEstampa($EstampaBasePedidoTO);
                 $estampas[$key_arr][$key_est]['id_estampa_base_pedido'] = $id_estampa_base_pedido;
             } catch (ExceptionJSON $e) {
                 $e->enviaJSON();
             }
         }
     }
     foreach ($itens as $key => $arr) {
         $id_agrupamento_insumos = null;
         foreach ($arr as $value) {
             $ItemPedidoVendaTO->id_pedido_venda = $id_pedido_venda;
             $ItemPedidoVendaTO->id_produto = $value['id_produto'];
             $ItemPedidoVendaTO->desconto_aplicado = isset($value['desconto_aplicado']) ? $value['desconto_aplicado'] : 0;
             $ItemPedidoVendaTO->valor_desconto = isset($value['valor_desconto']) ? $value['valor_desconto'] : 0;
             $ItemPedidoVendaTO->qtd = $value['qtd'];
             $ItemPedidoVendaTO->valor_real_item = $value['valor_real_item'];
             $ItemPedidoVendaTO->vlr_custo = $value['vlr_custo'];
             $ItemPedidoVendaTO->perc_imposto_compra = $value['perc_imposto_compra'];
             $ItemPedidoVendaTO->perc_desconto_compra = $value['perc_desconto_compra'];
             $ItemPedidoVendaTO->perc_margem_aplicada = $value['perc_margem_aplicada'];
             $ItemPedidoVendaTO->tipo_produto = $value['tipo_produto'];
             $ItemPedidoVendaTO->id_produto_base = isset($value['id_produto_base']) && is_numeric($value['id_produto_base']) ? $value['id_produto_base'] : null;
             $ItemPedidoVendaTO->config_grad = $value['config_grad'];
             $ItemPedidoVendaTO->id_agrupamento_insumos = $id_agrupamento_insumos;
             $ItemPedidoVendaTO->flg_brinde = $value['flg_brinde'];
             $ItemPedidoVendaTO->tipo_base = isset($value['tipo_base']) ? $value['tipo_base'] : null;
             $ItemPedidoVendaTO->modelo_base = isset($value['modelo_base']) ? $value['modelo_base'] : null;
             $last_id_item = $ItemPedidoVendaDao->saveItemPedidoVenda($ItemPedidoVendaTO);
             $id_agrupamento_insumos = $id_agrupamento_insumos == null ? $last_id_item : $id_agrupamento_insumos;
             if (!$last_id_item) {
                 Flight::halt(500, 'erro ao inserir os itens da venda');
             }
             if ($value['tipo_produto'] == 'base' && count($estampas) > 0) {
                 $EstampaBasePedidoItemPedidoVendaTO = new EstampaBasePedidoItemPedidoVendaTO();
                 $EstampaBasePedidoItemPedidoVendaDao = new EstampaBasePedidoItemPedidoVendaDao();
                 $key_estampa = (int) $value['flg_brinde'] == 1 ? 'brinde-' . $value['config_grad'] : $value['config_grad'];
                 foreach ($estampas[$key_estampa] as $estampa) {
                     $EstampaBasePedidoItemPedidoVendaTO->id_estampa_base_pedido = $estampa['id_estampa_base_pedido'];
                     $EstampaBasePedidoItemPedidoVendaTO->id_item_pedido_venda = $last_id_item;
                     try {
                         $EstampaBasePedidoItemPedidoVendaDao->save($EstampaBasePedidoItemPedidoVendaTO);
                     } catch (ExceptionJSON $e) {
                         $e->enviaJSON();
                     }
                 }
             }
         }
         $ItemPedidoVendaDao->updateAgrupamento($id_agrupamento_insumos);
     }
     // gravando pedido com chinelos gerados
     $ProdutoTO = new ProdutoTO();
     $ProdutoDao = new ProdutoDao();
     $ProdutoEmpreendimentoTO = new ProdutoEmpreendimentoTO();
     $EstoqueDao = new EstoqueDao();
     $EstoqueTO = new EstoqueTO();
     foreach ($chinelos_gerados as $key => $value) {
         $ProdutoTO->nome = $value['nome'];
         $ProdutoTO->flg_excluido = 1;
         $last_id_produto = $ProdutoDao->saveProduto($ProdutoTO);
         $ProdutoEmpreendimentoTO->id_produto = $last_id_produto;
         $ProdutoEmpreendimentoTO->id_empreendimento = $id_empreendimento;
         if (!$ProdutoDao->produtoEmpreendimento($ProdutoEmpreendimentoTO)) {
             Flight::halt(500, 'Erro ao cadastrar o id_empreendimento');
         }
         $chinelos_gerados[$key]['id_produto'] = $last_id_produto;
     }
     $PedidoVendaTO->id = isset($pedido_venda['id_pedido_gerado']) ? $pedido_venda['id_pedido_gerado'] : NULL;
     $PedidoVendaTO->id_usuario = isset($pedido_venda['id_usuario']) ? $pedido_venda['id_usuario'] : NULL;
     $PedidoVendaTO->id_cliente = is_numeric($pedido_venda['id_cliente']) ? $pedido_venda['id_cliente'] : NULL;
     $PedidoVendaTO->venda_confirmada = isset($pedido_venda['venda_confirmada']) ? $pedido_venda['venda_confirmada'] : NULL;
     $PedidoVendaTO->id_empreendimento = isset($pedido_venda['id_empreendimento']) ? $pedido_venda['id_empreendimento'] : NULL;
     $PedidoVendaTO->id_status_pedido = isset($pedido_venda['id_status_pedido']) ? $pedido_venda['id_status_pedido'] : 1;
     $PedidoVendaTO->observacao = isset($pedido_venda['observacao']) ? $pedido_venda['observacao'] : NULL;
     $PedidoVendaTO->id_pedido_master = $id_pedido_venda;
     $ItemPedidoVendaDao->delete($PedidoVendaTO->id);
     $PedidoVendaDao->updatePedido($PedidoVendaTO);
     $id_pedido_gerado = $pedido_venda['id_pedido_gerado'];
     foreach ($chinelos_gerados as $key => $value) {
         $ItemPedidoVendaTO->id_pedido_venda = $id_pedido_gerado;
         $ItemPedidoVendaTO->id_pedido_master = $id_pedido_venda;
         $ItemPedidoVendaTO->id_produto = $value['id_produto'];
         $ItemPedidoVendaTO->desconto_aplicado = isset($value['desconto_aplicado']) ? $value['desconto_aplicado'] : 0;
         $ItemPedidoVendaTO->valor_desconto = isset($value['valor_desconto']) ? $value['valor_desconto'] : 0;
         $ItemPedidoVendaTO->qtd = $value['qtd'];
         $ItemPedidoVendaTO->valor_real_item = $value['valor_real_item'];
         $ItemPedidoVendaTO->vlr_custo = $value['vlr_custo'];
         $ItemPedidoVendaTO->perc_imposto_compra = 0;
         $ItemPedidoVendaTO->perc_desconto_compra = 0;
         $ItemPedidoVendaTO->perc_margem_aplicada = $value['perc_margem_aplicada'];
         $ItemPedidoVendaTO->tipo_produto = null;
         $ItemPedidoVendaTO->id_produto_base = null;
         $ItemPedidoVendaTO->config_grad = null;
         $ItemPedidoVendaTO->id_agrupamento_insumos = null;
         $ItemPedidoVendaTO->flg_brinde = $value['flg_brinde'];
         if (!$ItemPedidoVendaDao->saveItemPedidoVenda($ItemPedidoVendaTO)) {
             Flight::halt(500, 'erro ao inserir os itens da venda');
         }
     }
     Flight::response()->status(201)->header('Content-Type', 'application/json')->write(json_encode(array('id_pedido_venda' => $id_pedido_venda)))->send();
 }