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