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);
     }
 }