public function finalizarPedido($id_pedido_venda, $caixa)
 {
     $ItemPedidoVendaDao = new ItemPedidoVendaDao();
     $pedido_venda = $this->getPedidoVenda($id_pedido_venda);
     $pedido_venda['itens'] = $ItemPedidoVendaDao->getItens($id_pedido_venda, null, null);
     $pedido_gerado = $this->getPedidoMaster($pedido_venda['id']);
     $pedido_gerado['itens'] = $ItemPedidoVendaDao->getItens($pedido_gerado['id'], null, null);
     $id_empreendimento = $pedido_venda['id_empreendimento'];
     $produtos_venda = array();
     $Dao = new Dao();
     $out = array();
     $Dao->setTimeZone($id_empreendimento);
     $dta = date('Y-m-d H:i:s');
     $EstoqueDao = new EstoqueDao();
     $EstoqueTO = new EstoqueTO();
     $VendaTO = new VendaTO();
     $VendaDao = new VendaDao();
     $ItemVendaTO = new ItemVendaTO();
     $ItemVendaDao = new ItemVendaDao();
     $EstoqueEntradaTO = new EstoqueEntradaTO();
     $EstoqueEntradaDao = new EstoqueEntradaDao();
     $EstoqueEntradaTO->id_empreendimento = $id_empreendimento;
     $EstoqueEntradaTO->id_deposito = $caixa['id_deposito'];
     $EstoqueEntradaTO->id_pedido_venda = $id_pedido_venda;
     $EstoqueEntradaTO->dta_entrada = $dta;
     $id_estoque_entrada = $EstoqueEntradaDao->saveEstoqueEntrada($EstoqueEntradaTO);
     if ($id_estoque_entrada) {
         $ItemEstoqueEntradaTO = new ItemEstoqueEntradaTO();
         $ItemEstoqueEntradaDao = new ItemEstoqueEntradaDao();
         foreach ($pedido_gerado['itens'] as $key => $value) {
             $ItemEstoqueEntradaTO->id_estoque_entrada = $id_estoque_entrada;
             $ItemEstoqueEntradaTO->id_produto = $value['id_produto'];
             $ItemEstoqueEntradaTO->qtd_item = $value['qtd'];
             $ItemEstoqueEntradaTO->vlr_custo = NULL;
             $ItemEstoqueEntradaTO->perc_imposto = NULL;
             $ItemEstoqueEntradaTO->perc_desconto = NULL;
             $ItemEstoqueEntradaTO->dta_validade = '2099-12-31';
             if ($ItemEstoqueEntradaDao->saveItemEstoqueEntrada($ItemEstoqueEntradaTO)) {
                 $EstoqueTO = new EstoqueTO();
                 $EstoqueDao = new EstoqueDao();
                 $PrecoProdutoTO = new PrecoProdutoTO();
                 $PrecoProdutoDao = new PrecoProdutoDao();
                 $EstoqueTO->id_deposito = $EstoqueEntradaTO->id_deposito;
                 $EstoqueTO->id_produto = $ItemEstoqueEntradaTO->id_produto;
                 $EstoqueTO->qtd_item = $ItemEstoqueEntradaTO->qtd_item;
                 $EstoqueTO->dta_validade = $ItemEstoqueEntradaTO->dta_validade;
                 if (!$EstoqueDao->atualizaEstoque($EstoqueTO)) {
                     Flight::halt(500, 'erro ao atualizar estoque');
                 }
             } else {
                 Flight::halt(500, 'erro ao inserir itens da entrada');
             }
         }
     } else {
         Flight::halt(500, 'erro ao inserir entrada no estoque');
     }
     $VendaTO->id_usuario = $pedido_venda['id_usuario'];
     $VendaTO->id_cliente = $pedido_venda['id_cliente'];
     $VendaTO->venda_confirmada = 1;
     $VendaTO->id_empreendimento = $pedido_venda['id_empreendimento'];
     $VendaTO->id_status_venda = 2;
     $VendaTO->id_pedido_venda = $pedido_venda['id'];
     $id_venda = $VendaDao->saveVenda($VendaTO);
     if (!$id_venda) {
         Flight::halt(500, 'erro ao inserir venda');
     }
     foreach ($pedido_gerado['itens'] as $key => $value) {
         $ItemVendaTO->id_venda = $id_venda;
         $ItemVendaTO->id_produto = $value['id_produto'];
         $ItemVendaTO->desconto_aplicado = $value['desconto_aplicado'];
         $ItemVendaTO->valor_desconto = $value['valor_desconto'];
         $ItemVendaTO->qtd = $value['qtd'];
         $ItemVendaTO->valor_real_item = $value['valor_real_item'];
         $ItemVendaTO->vlr_custo = $value['vlr_custo'];
         $ItemVendaTO->perc_imposto_compra = $value['perc_imposto_compra'];
         $ItemVendaTO->perc_desconto_compra = $value['perc_desconto_compra'];
         $ItemVendaTO->perc_margem_aplicada = $value['perc_margem_aplicada'];
         if (!$ItemVendaDao->saveItemVenda($ItemVendaTO)) {
             Flight::halt(500, 'erro ao inserir os itens da venda');
         }
         if (!$EstoqueDao->baixaEstoquePDV($id_empreendimento, $id_venda, $value['id_produto'], $caixa['id_deposito'], $value['qtd'])) {
             Flight::halt(500, 'error ao atualizar estoque');
         }
     }
     $this->changeStatusPedido($id_pedido_venda, 3);
     Flight::halt(201);
 }
 public function salvarDevolucao(DevolucaoTO $DevolucaoTO, $itens_devolucao, $id_deposito)
 {
     $dta_criacao = date('Y-m-d H:i:s');
     $vlr_devolucao = 0;
     $sql_insert_devolucao = "INSERT INTO tbl_devolucao (id_empreendimento, id_venda, obs_devolucao, dta_devolucao,id_operador) \n\t\t\t\t\t\t\t\t\t   VALUES (:id_empreendimento, :id_venda, :obs_devolucao, :dta_devolucao,:id_operador);";
     $sql_insert_item_devolucao = "INSERT INTO tbl_itens_devolucao (id_produto, id_devolucao, qtd, valor_real_devolucao, dta_validade) \n\t\t\t\t\t\t\t\t \t   VALUES (:id_produto, :id_devolucao, :qtd, :valor_real_devolucao, :dta_validade)";
     $sql_update_itens_venda = " UPDATE tbl_itens_venda SET flg_produto_devolvido = :flg_produto_devolvido, qtd_devolvida = qtd_devolvida+:qtd_devolvida\n\t\t\t\t\t\t\t\t \t   WHERE id = :id";
     $sql_insert_vale_troca = "INSERT INTO tbl_vale_troca (id_devolucao, dta_criacao, vlr_disponivel) \n\t\t\t\t\t\t\t\t\t   VALUES (:id_devolucao, :dta_criacao, :vlr_disponivel);";
     $insert_devolucao = $this->conn->prepare($sql_insert_devolucao);
     $insert_devolucao->bindValue(':id_empreendimento', $DevolucaoTO->id_empreendimento, PDO::PARAM_STR);
     $insert_devolucao->bindValue(':id_venda', $DevolucaoTO->id_venda, PDO::PARAM_STR);
     $insert_devolucao->bindValue(':id_operador', $DevolucaoTO->id_operador, PDO::PARAM_STR);
     $insert_devolucao->bindValue(':obs_devolucao', $DevolucaoTO->obs_devolucao, PDO::PARAM_STR);
     $insert_devolucao->bindValue(':dta_devolucao', $dta_criacao, PDO::PARAM_STR);
     if ($insert_devolucao->execute()) {
         $id_devolucao = $this->conn->lastInsertId();
         $EstoqueEntradaDao = new EstoqueEntradaDao();
         $EstoqueEntradaTO = new EstoqueEntradaTO();
         $EstoqueEntradaTO->id_empreendimento = $DevolucaoTO->id_empreendimento;
         $EstoqueEntradaTO->dta_entrada = $dta_criacao;
         $EstoqueEntradaTO->id_devolucao = $id_devolucao;
         $EstoqueEntradaTO->vlr_total_imposto = 0;
         $EstoqueEntradaTO->vlr_frete = 0;
         $EstoqueEntradaTO->vlr_total_nota_fiscal = 0;
         $EstoqueEntradaTO->id_deposito = $id_deposito;
         $id_estoque_entrada = $EstoqueEntradaDao->saveEstoqueEntrada($EstoqueEntradaTO);
         foreach ($itens_devolucao as $key => $value) {
             $insert_item_devolucao = $this->conn->prepare($sql_insert_item_devolucao);
             $insert_item_devolucao->bindValue(':id_produto', $value['id_produto'], PDO::PARAM_STR);
             $insert_item_devolucao->bindValue(':id_devolucao', $id_devolucao, PDO::PARAM_STR);
             $insert_item_devolucao->bindValue(':qtd', $value['qtd'], PDO::PARAM_STR);
             $insert_item_devolucao->bindValue(':valor_real_devolucao', $value['valor_real_devolucao'], PDO::PARAM_STR);
             $insert_item_devolucao->bindValue(':dta_validade', $value['dta_validade'], PDO::PARAM_STR);
             $vlr_devolucao += (int) $value['qtd'] * (double) $value['valor_real_devolucao'];
             if (!$insert_item_devolucao->execute()) {
                 $this->PDOException($insert_item_devolucao);
             }
             $ItemEstoqueEntradaTO = new ItemEstoqueEntradaTO();
             $ItemEstoqueEntradaDao = new ItemEstoqueEntradaDao();
             $ItemEstoqueEntradaTO->id_estoque_entrada = $id_estoque_entrada;
             $ItemEstoqueEntradaTO->id_produto = $value['id_produto'];
             $ItemEstoqueEntradaTO->qtd_item = $value['qtd'];
             $ItemEstoqueEntradaTO->vlr_custo = $value['vlr_custo'];
             $ItemEstoqueEntradaTO->perc_imposto = isset($value['perc_imposto_compra']) ? $value['perc_imposto_compra'] : 0;
             $ItemEstoqueEntradaTO->perc_desconto = isset($value['perc_desconto_compra']) ? $value['perc_desconto_compra'] : 0;
             $ItemEstoqueEntradaTO->dta_validade = $value['dta_validade'];
             $ItemEstoqueEntradaTO->id_deposito = $value['id_deposito'];
             $id_item_estoque_entrada = $ItemEstoqueEntradaDao->saveItem($ItemEstoqueEntradaTO);
             $update_itens_venda = $this->conn->prepare($sql_update_itens_venda);
             $update_itens_venda->bindValue(':flg_produto_devolvido', 1, PDO::PARAM_STR);
             $update_itens_venda->bindValue(':qtd_devolvida', (int) $value['qtd'], PDO::PARAM_INT);
             $update_itens_venda->bindValue(':id', $value['id_item_venda'], PDO::PARAM_STR);
             if (!$update_itens_venda->execute()) {
                 $this->PDOException($update_itens_venda);
             }
             $EstoqueDao = new EstoqueDao();
             $exist = $EstoqueDao->existProdutoEstoque($value['id_produto'], $value['id_deposito'], $value['dta_validade']);
             if ($exist) {
                 $sql_atualiza_estoque = "UPDATE  tbl_estoque SET qtd_item = qtd_item + :qtd_item , dta_ultima_atualizacao = NOW(),\n\t\t\t\t\t\t\t\tdta_validade = :dta_validade\n\t\t\t\t\t\t\t    WHERE id_produto = :id_produto AND id_deposito = :id_deposito AND dta_validade = :dta_validade";
             } else {
                 $sql_atualiza_estoque = "INSERT INTO tbl_estoque (id_deposito ,id_produto, qtd_item,dta_ultima_atualizacao,dta_validade)\n\t\t\t\t\t\t\t\tVALUES (:id_deposito, :id_produto, :qtd_item, NOW(),:dta_validade);";
             }
             $atualiza_estoque = $this->conn->prepare($sql_atualiza_estoque);
             $atualiza_estoque->bindValue(':id_deposito', $value['id_deposito'], PDO::PARAM_STR);
             $atualiza_estoque->bindValue(':id_produto', $value['id_produto'], PDO::PARAM_STR);
             $atualiza_estoque->bindValue(':qtd_item', (int) $value['qtd'], PDO::PARAM_INT);
             $atualiza_estoque->bindValue(':dta_validade', $value['dta_validade'], PDO::PARAM_STR);
             $dadosTrigger = new StdClass();
             $dadosTrigger->qtd_entrada = $value['qtd'];
             $dadosTrigger->acao_movimentacao = 'ENTRADA';
             $dadosTrigger->id_tipo_movimentacao_estoque = 6;
             $dadosTrigger->id_estoque_entrada = $id_estoque_entrada;
             $dadosTrigger->id_item_estoque_entrada = $id_item_estoque_entrada;
             $dadosTrigger->id_responsavel = $DevolucaoTO->id_operador;
             $dadosTrigger->id_empreendimento = $DevolucaoTO->id_empreendimento;
             $dadosTrigger->id_devolucao = $id_devolucao;
             $varTriggerSql = "";
             $TRGTblEstoqueAUTO = new TRGTblEstoqueAUTO();
             $TRGTblEstoqueAUTO->__setAll($dadosTrigger);
             if (!empty($dadosTrigger)) {
                 foreach ($TRGTblEstoqueAUTO as $keyTrigger => $valueTrigger) {
                     if ($valueTrigger == null) {
                         $varTriggerSql .= "SET @{$keyTrigger} = NULL;";
                     } else {
                         $varTriggerSql .= "SET @{$keyTrigger} = '{$valueTrigger}';";
                     }
                 }
             }
             $this->rumQuery($varTriggerSql);
             if (!$atualiza_estoque->execute()) {
                 $this->PDOException($atualiza_estoque);
             }
         }
         $insert_vale_troca = $this->conn->prepare($sql_insert_vale_troca);
         $insert_vale_troca->bindValue(':id_devolucao', $id_devolucao, PDO::PARAM_STR);
         $insert_vale_troca->bindValue(':dta_criacao', $dta_criacao, PDO::PARAM_STR);
         $insert_vale_troca->bindValue(':vlr_disponivel', $vlr_devolucao, PDO::PARAM_STR);
         if (!$insert_vale_troca->execute()) {
             $this->PDOException($insert_vale_troca);
         }
         return true;
     } else {
         $this->PDOException($insert_devolucao);
     }
 }
 public static function changeStatus($id_ordem_producao, $id_status_change, $id_empreendimento, $id_usuario)
 {
     $OrdemProducaoDao = new OrdemProducaoDao();
     $ItensOrdemProducaoDao = new ItensOrdemProducaoDao();
     $EstoqueDao = new EstoqueDao();
     $Dao = new Dao();
     $ProdutoDao = new ProdutoDao();
     $out = array();
     $Dao->setTimeZone($id_empreendimento);
     $dta_change = date('Y-m-d H:i:s');
     $itens = $ItensOrdemProducaoDao->getItensOrdemProducao(null, null, array('tiop.id_ordem_producao' => $id_ordem_producao));
     $aux = array();
     $insumos = array();
     $OrdensProducao = $OrdemProducaoDao->getOrdemProducao(NULL, NULL, array('top->id' => $id_ordem_producao));
     $OrdensProducao = $OrdensProducao[0];
     $status = $OrdemProducaoDao->getStatus(array("id" => $id_status_change));
     $status = $status[0];
     foreach ($itens as $key => $value) {
         $item_aux = $value;
         $item_aux['qtd_produzir'] = (int) $value['qtd'];
         $item_aux['itens'] = $ProdutoDao->getInsumos($value['id_produto'], null);
         $aux[$value['id_produto']] = $item_aux;
         foreach ($item_aux['itens'] as $key_i => $value_i) {
             $qtd_produzir = $item_aux['qtd_produzir'];
             $qtd = $value_i['qtd'];
             if (isset($insumos[$value_i['id']])) {
                 $insumos[$value_i['id']]['qtd'] += $qtd_produzir * $qtd;
             } else {
                 $insumos[$value_i['id']] = array('qtd' => $qtd_produzir * $qtd);
             }
         }
     }
     if ((int) $id_status_change == 2 || (int) $id_status_change == 3) {
         foreach ($insumos as $key => $value) {
             $qtd = (int) $value['qtd'];
             $estoque = $EstoqueDao->getQtdProduto($id_empreendimento, $key, null, $OrdensProducao['id_deposito']);
             $estoque_real = $estoque - $qtd;
             if ($estoque_real < 0) {
                 $out[] = array((double) $key);
             }
         }
     }
     if (count($out) > 0) {
         Flight::response()->status(406)->header('Content-Type', 'application/json')->write(json_encode(array('out_estoque' => $out, 'lista' => $aux)))->send();
         return;
     }
     try {
         $Conexao = new Conexao();
         $Conexao::$alto_commit = false;
         $Conexao::getInstance();
         $Conexao->beginTransaction();
         if ((int) $id_status_change == 3) {
             $EstoqueEntradaTO = new EstoqueEntradaTO();
             $EstoqueEntradaDao = new EstoqueEntradaDao();
             $EstoqueEntradaTO->id_empreendimento = $id_empreendimento;
             $EstoqueEntradaTO->id_deposito = $OrdensProducao['id_deposito'];
             $EstoqueEntradaTO->id_ordem_producao = $id_ordem_producao;
             $EstoqueEntradaTO->dta_entrada = $dta_change;
             $EstoqueEntradaTO->id_usuario = $id_usuario;
             $id_estoque_entrada = $EstoqueEntradaDao->saveEstoqueEntrada($EstoqueEntradaTO);
             if ($id_estoque_entrada) {
                 $ItemEstoqueEntradaTO = new ItemEstoqueEntradaTO();
                 $ItemEstoqueEntradaDao = new ItemEstoqueEntradaDao();
                 foreach ($itens as $key => $value) {
                     $ItemEstoqueEntradaTO->id_estoque_entrada = $id_estoque_entrada;
                     $ItemEstoqueEntradaTO->id_produto = $value['id_produto'];
                     $ItemEstoqueEntradaTO->qtd_item = $value['qtd'];
                     $ItemEstoqueEntradaTO->vlr_custo = NULL;
                     $ItemEstoqueEntradaTO->perc_imposto = NULL;
                     $ItemEstoqueEntradaTO->perc_desconto = NULL;
                     $ItemEstoqueEntradaTO->dta_validade = '2099-12-31';
                     $id_item_estoque_entrada = $ItemEstoqueEntradaDao->saveItemEstoqueEntrada($ItemEstoqueEntradaTO);
                     if ($id_item_estoque_entrada) {
                         $EstoqueTO = new EstoqueTO();
                         $EstoqueDao = new EstoqueDao();
                         $PrecoProdutoTO = new PrecoProdutoTO();
                         $PrecoProdutoDao = new PrecoProdutoDao();
                         $EstoqueTO->id_deposito = $EstoqueEntradaTO->id_deposito;
                         $EstoqueTO->id_produto = $ItemEstoqueEntradaTO->id_produto;
                         $EstoqueTO->qtd_item = $ItemEstoqueEntradaTO->qtd_item;
                         $EstoqueTO->dta_validade = $ItemEstoqueEntradaTO->dta_validade;
                         $dadosTrigger = new StdClass();
                         $dadosTrigger->qtd_entrada = $EstoqueTO->qtd_item;
                         $dadosTrigger->acao_movimentacao = 'ENTRADA';
                         $dadosTrigger->id_tipo_movimentacao_estoque = 4;
                         $dadosTrigger->id_estoque_entrada = $id_estoque_entrada;
                         $dadosTrigger->id_item_estoque_entrada = $id_item_estoque_entrada;
                         $dadosTrigger->id_responsavel = $id_usuario;
                         $dadosTrigger->id_empreendimento = $id_empreendimento;
                         $dadosTrigger->id_ordem_producao = $id_ordem_producao;
                         if (!$EstoqueDao->atualizaEstoque($EstoqueTO, 'update', $dadosTrigger)) {
                             $Conexao->back();
                             Flight::halt(500, 'erro ao atualizar estoque');
                         }
                     } else {
                         $Conexao->back();
                         Flight::halt(500, 'erro ao inserir itens da entrada');
                     }
                 }
             } else {
                 $Conexao->back();
                 Flight::halt(500, 'erro ao inserir entrada no estoque');
             }
             foreach ($insumos as $key => $value) {
                 if (!$EstoqueDao->baixaEstoqueOrdemProducao($OrdensProducao['id_empreendimento'], $OrdensProducao['id'], $key, $OrdensProducao['id_deposito'], $value['qtd'], $id_usuario)) {
                     $Conexao->back();
                     Flight::halt(500, 'error ao atualizar saida estoque');
                 }
             }
         }
         if (!$OrdemProducaoDao->ChangeStatus($id_ordem_producao, $id_status_change, $dta_change)) {
             $Conexao->back();
             Flight::halt(500, 'Erro ao cadastrar mudança de status 1');
         }
         if (!$OrdemProducaoDao->savechangeOrdemProducao($id_ordem_producao, $id_status_change, $dta_change)) {
             $Conexao->back();
             Flight::halt(500, 'Erro ao cadastrar mudança de status 2');
         }
         $Conexao->commit();
         Flight::response()->status(201)->header('Content-Type', 'application/json')->write(json_encode(array('status' => $status)))->send();
     } catch (Exception $e) {
         $Conexao->back();
         jsonException($e);
     }
 }
 public static function receber()
 {
     try {
         $conn = Conexao::getInstance();
         if (!$conn->inTransaction()) {
             $conn->beginTransaction();
         }
         $TransferenciaEstoqueTO = new stdClass();
         $TransferenciaEstoqueDao = new TransferenciaEstoqueDao();
         $EstoqueDao = new EstoqueDao();
         $EstoqueEntradaDao = new EstoqueEntradaDao();
         $id = $_POST['id'];
         $id_empreendimento_pedido = $_POST['id_empreendimento_pedido'];
         $TransferenciaEstoqueTO->dta_recebido = $_POST['dta_recebido'];
         $TransferenciaEstoqueTO->id_usuario_recebeu = $_POST['id_usuario_recebeu'];
         $TransferenciaEstoqueTO->id_status_transferencia = $_POST['id_status_transferencia'];
         $TransferenciaEstoqueTO->flg_controle_validade = $_POST['flg_controle_validade'];
         $produtos = $_POST['produtos'];
         $TransferenciaEstoqueDao->updateTransferencia($TransferenciaEstoqueTO, 'id=' . $id);
         $ItemTransferenciaEstoqueDao = new ItemTransferenciaEstoqueDao();
         foreach ($produtos as $key => $value) {
             $ItemTransferenciaEstoqueTO = new stdClass();
             $ItemTransferenciaEstoqueTO->qtd_recebida = $value['qtd_recebida'];
             $ItemTransferenciaEstoqueTO->id_deposito_entrada = isset($value['id_deposito_entrada']) ? $value['id_deposito_entrada'] : NULL;
             $ItemTransferenciaEstoqueDao->updateItemTransferencia($ItemTransferenciaEstoqueTO, 'id_produto=' . $value['id_produto'] . ' AND id_transferencia =' . $id);
             if ((int) $value['atualizar_custo'] == 1) {
                 $PrecoProdutoDao = new PrecoProdutoDao();
                 $PrecoProdutoTO = new PrecoProdutoTO();
                 $PrecoProdutoTO->id_produto = $value['id_produto'];
                 $PrecoProdutoTO->vlr_custo = $value['vlr_custo_sugerido'];
                 $PrecoProdutoTO->perc_imposto_compra = 0;
                 $PrecoProdutoTO->perc_desconto_compra = 0;
                 $PrecoProdutoTO->id_empreendimento = $id_empreendimento_pedido;
                 if (!$PrecoProdutoDao->atualizaVlrCusto($PrecoProdutoTO)) {
                     if ($conn->inTransaction()) {
                         $conn->rollback();
                     }
                     Flight::halt(500);
                 }
             }
         }
         $EstoqueEntradaTO = new EstoqueEntradaTO();
         $EstoqueEntradaTO->id_empreendimento = $id_empreendimento_pedido;
         $EstoqueEntradaTO->dta_entrada = $TransferenciaEstoqueTO->dta_recebido;
         $EstoqueEntradaTO->id_transferencia_estoque = $id;
         $EstoqueEntradaTO->vlr_total_imposto = 0;
         $EstoqueEntradaTO->vlr_frete = 0;
         $EstoqueEntradaTO->vlr_total_nota_fiscal = 0;
         $id_estoque_entrada = $EstoqueEntradaDao->saveEstoqueEntrada($EstoqueEntradaTO);
         if ($id_estoque_entrada) {
             $ItemEstoqueEntradaTO = new ItemEstoqueEntradaTO();
             $ItemEstoqueEntradaDao = new ItemEstoqueEntradaDao();
             foreach ($produtos as $key => $value) {
                 if ((int) $value['qtd_recebida'] > 0) {
                     $ItemEstoqueEntradaTO->id_estoque_entrada = $id_estoque_entrada;
                     $ItemEstoqueEntradaTO->id_produto = $value['id_produto'];
                     $ItemEstoqueEntradaTO->qtd_item = $value['qtd_recebida'];
                     $ItemEstoqueEntradaTO->vlr_custo = $value['vlr_custo_real'];
                     $ItemEstoqueEntradaTO->perc_imposto = isset($value['perc_imposto']) ? $value['imposto'] : 0;
                     $ItemEstoqueEntradaTO->perc_desconto = isset($value['perc_desconto']) ? $value['desconto'] : 0;
                     $ItemEstoqueEntradaTO->dta_validade = isset($value['dta_validade']) ? $value['dta_validade'] : '2099-12-31';
                     $ItemEstoqueEntradaTO->id_deposito = $value['id_deposito_entrada'];
                     $id_item_estoque_entrada = $ItemEstoqueEntradaDao->saveItemEstoqueEntrada($ItemEstoqueEntradaTO);
                     if ($id_item_estoque_entrada) {
                         $EstoqueTO = new EstoqueTO();
                         $EstoqueDao = new EstoqueDao();
                         $PrecoProdutoTO = new PrecoProdutoTO();
                         $PrecoProdutoDao = new PrecoProdutoDao();
                         $EstoqueTO->id_deposito = $value['id_deposito_entrada'];
                         $EstoqueTO->id_produto = $ItemEstoqueEntradaTO->id_produto;
                         $EstoqueTO->qtd_item = $ItemEstoqueEntradaTO->qtd_item;
                         $EstoqueTO->dta_validade = $ItemEstoqueEntradaTO->dta_validade;
                         $dadosTrigger = new StdClass();
                         $dadosTrigger->qtd_entrada = $EstoqueTO->qtd_item;
                         $dadosTrigger->acao_movimentacao = 'ENTRADA';
                         $dadosTrigger->id_tipo_movimentacao_estoque = 5;
                         $dadosTrigger->id_estoque_entrada = $id_estoque_entrada;
                         $dadosTrigger->id_item_estoque_entrada = $id_item_estoque_entrada;
                         $dadosTrigger->id_responsavel = $TransferenciaEstoqueTO->id_usuario_recebeu;
                         $dadosTrigger->id_empreendimento = $id_empreendimento_pedido;
                         $dadosTrigger->id_transferencia = $id;
                         if (!$EstoqueDao->atualizaEstoque($EstoqueTO, 'update', $dadosTrigger)) {
                             if ($conn->inTransaction()) {
                                 $conn->rollback();
                             }
                             Flight::halt(500, 'erro ao atualizar estoque');
                         }
                     } else {
                         if ($conn->inTransaction()) {
                             $conn->rollback();
                         }
                         Flight::halt(500, 'erro ao inserir itens da entrada');
                     }
                 }
             }
             if ($conn->inTransaction()) {
                 $conn->commit();
             }
             Flight::halt(201);
         } else {
             if ($conn->inTransaction()) {
                 $conn->rollback();
             }
             Flight::halt(500);
         }
     } catch (Exception $e) {
         if ($conn->inTransaction()) {
             $conn->rollback();
         }
         jsonException($e);
     }
 }
 public static function getEstoqueEntradas($id_empreendimento, $offset, $limit)
 {
     $EstoqueEntradaDao = new EstoqueEntradaDao();
     $entradas = $EstoqueEntradaDao->getEstoqueEntradas($id_empreendimento, $offset, $limit, $_GET);
     if ($entradas) {
         Flight::json($entradas);
     } else {
         Flight::halt(404, 'pagamento não encontrado');
     }
 }