public static function changeStatusPedido($id_pedido, $id_status_pedido, $id_deposito = null) { $PedidoVendaDao = new PedidoVendaDao(); $Conexao = new Conexao(); $Conexao->beginTransaction(); if ((int) $id_status_pedido == 2) { $PedidoVendaDao = new PedidoVendaDao(); $EstoqueDao = new EstoqueDao(); $ItemPedidoVendaDao = new ItemPedidoVendaDao(); $pedido_venda = $PedidoVendaDao->getPedidoVenda($id_pedido); $pedido_venda['itens'] = $ItemPedidoVendaDao->getItens($id_pedido, null, null); $arr_qtd = array(); $out = array(); foreach ($pedido_venda['itens'] as $x => $y) { if (!isset($arr_qtd[$y['id_produto']])) { $arr_qtd[$y['id_produto']] = 0; } $arr_qtd[$y['id_produto']] += (int) $y['qtd']; } foreach ($arr_qtd as $id_produto => $value) { $id_empreendimento = $pedido_venda['id_empreendimento']; $qtd = (int) $value; $estoque = $EstoqueDao->getQtdProduto($pedido_venda['id_empreendimento'], $id_produto, null, $id_deposito); $estoque_real = $estoque - $qtd; if ($estoque_real < 0) { $out[] = array((double) $id_produto); } } if (count($out) > 0) { Flight::response()->status(406)->header('Content-Type', 'application/json')->write(json_encode(array('out_estoque' => $out)))->send(); return; } if (!$EstoqueDao->baixaEstoquePedido($id_empreendimento, $id_pedido, $pedido_venda['itens'], $id_deposito, $value['qtd'])) { $Conexao->back(); Flight::halt(500, 'Erro ao dar baixa no estoque'); } } if (!$PedidoVendaDao->changeStatusPedido($id_pedido, $id_status_pedido)) { $Conexao->back(); Flight::halt(500, 'Erro ao mudar status'); } if ((int) $id_status_pedido == 4) { $id_status_venda = 3; } else { if ((int) $id_status_pedido == 5) { $id_status_venda = 4; } } if (isset($id_status_venda)) { $PedidoVendaDao->changeStatusVenda($id_pedido, $id_status_venda); } Flight::json($PedidoVendaDao->getStatusByid($id_status_pedido)); }