public static function saveDevolucao()
 {
     $PagamentoTO = new PagamentoTO();
     $PagamentoDao = new PagamentoDao();
     $validator = new DataValidator();
     $PagamentoTO->id_cliente = isset($_POST['id_cliente']) ? $_POST['id_cliente'] : '';
     $PagamentoTO->id_forma_pagamento = 7;
     $PagamentoTO->valor_pagamento = isset($_POST['valor_pagamento']) ? removeMaskNumber($_POST['valor_pagamento']) : '';
     $PagamentoTO->status_pagamento = 1;
     $validator->set_msg('O codigo do cliente é obrigatório')->set('id_cliente', $PagamentoTO->id_cliente)->is_num();
     $validator->set_msg('O codigo do empreendimeto é obrigatório')->set('id_empreendimento', $PagamentoTO->id_cliente)->is_num();
     $validator->set_msg('O valor do pagamento é obrigatório')->set('id_cliente', $PagamentoTO->id_cliente)->is_required();
     if (!$validator->validate()) {
         Flight::response()->status(406)->header('Content-Type', 'application/json')->write(json_encode($validator->get_errors()))->send();
         return;
     }
     $id_pagamento = $PagamentoDao->savePagamento($PagamentoTO);
     if ($id_pagamento) {
         $DevolucaoTO = new DevolucaoTO();
         $DevolucaoDao = new DevolucaoDao();
         $DevolucaoTO->id_cliente = $PagamentoTO->id_cliente;
         $DevolucaoTO->id_pagamento = $id_pagamento;
         $DevolucaoTO->id_empreendimento = $_POST['id_empreendimento'];
         $DevolucaoTO->obs_devolucao = $_POST['obs_devolucao'];
         $id_devolucao = $DevolucaoDao->saveDevolucao($DevolucaoTO);
         if ($id_devolucao) {
             $ItemDevolucaoTO = new ItemDevolucaoTO();
             $ItemDevolucaoDao = new ItemDevolucaoDao();
             foreach ($_POST['itens'] as $item) {
                 $ItemDevolucaoTO->id_devolucao = $id_devolucao;
                 $ItemDevolucaoTO->id_produto = $item["id_produto"];
                 $ItemDevolucaoTO->qtd = $item["qtd"];
                 $ItemDevolucaoTO->valor_real_devolucao = removeMaskNumber($item["valor_real_devolucao"]);
                 if ($ItemDevolucaoDao->saveItemDevolucao($ItemDevolucaoTO)) {
                 } else {
                     Flight::response()->status(500)->header('Content-Type', 'application/json')->write(json_encode(array("msg_error" => "Erro ao cadastrar Itens")))->send();
                 }
             }
         } else {
             Flight::response()->status(500)->header('Content-Type', 'application/json')->write(json_encode(array("msg_error" => "Erro ao efetuar devolução")))->send();
         }
     } else {
         Flight::response()->status(500)->header('Content-Type', 'application/json')->write(json_encode(array("msg_error" => "Erro ao efetuar devolução")))->send();
     }
 }
 public static function saveEstoqueEntrada()
 {
     $EstoqueEntradaTO = new EstoqueEntradaTO();
     $EstoqueEntradaDao = new EstoqueEntradaDao();
     $EstoqueEntradaTO->id_empreendimento = isset($_POST['id_empreendimento']) ? $_POST['id_empreendimento'] : NULL;
     $EstoqueEntradaTO->id_pedido_fornecedor = isset($_POST['id_pedido_fornecedor']) && !empty($_POST['id_pedido_fornecedor']) ? $_POST['id_pedido_fornecedor'] : NULL;
     $EstoqueEntradaTO->id_deposito = isset($_POST['id_deposito']) ? $_POST['id_deposito'] : NULL;
     $EstoqueEntradaTO->dta_entrada = isset($_POST['dta_entrada']) ? $_POST['dta_entrada'] : NULL;
     $EstoqueEntradaTO->num_nota_fiscal = isset($_POST['num_nota_fiscal']) ? $_POST['num_nota_fiscal'] : NULL;
     $EstoqueEntradaTO->id_fornecedor = isset($_POST['id_fornecedor']) ? $_POST['id_fornecedor'] : NULL;
     $EstoqueEntradaTO->id_usuario = isset($_POST['id_usuario']) ? $_POST['id_usuario'] : NULL;
     $EstoqueEntradaTO->vlr_total_imposto = isset($_POST['vlr_total_imposto']) ? removeMaskNumber($_POST['vlr_total_imposto']) : NULL;
     $EstoqueEntradaTO->vlr_frete = isset($_POST['vlr_frete']) ? removeMaskNumber($_POST['vlr_frete']) : 0;
     $EstoqueEntradaTO->vlr_total_nota_fiscal = isset($_POST['vlr_total_nota_fiscal']) ? removeMaskNumber($_POST['vlr_total_nota_fiscal']) : NULL;
     $validator = new DataValidator();
     $validator->set_msg('O codigo do empreendimento é obrigatório')->set('id_empreendimento', $EstoqueEntradaTO->id_empreendimento)->is_required();
     $validator->set_msg('E obrigatório a escolha de um fornecedor')->set('nme_fornecedor', isset($_POST['nme_fornecedor']) ? $_POST['nme_fornecedor'] : '')->is_required();
     $validator->set_msg('E obrigatório a escolha de um depósito')->set('nme_deposito', $EstoqueEntradaTO->id_deposito)->is_required();
     $validator->set_msg('O numero da nota fiscal é obrigatório')->set('num_nota_fiscal', $EstoqueEntradaTO->num_nota_fiscal)->is_required();
     $validator->set_msg('A data de entrada é obrigatória')->set('dta_entrada', $EstoqueEntradaTO->dta_entrada)->is_date('Y-m-d');
     if (!$validator->validate()) {
         Flight::response()->status(406)->header('Content-Type', 'application/json')->write(json_encode($validator->get_errors()))->send();
         return;
     }
     $id_estoque_entrada = $EstoqueEntradaDao->saveEstoqueEntrada($EstoqueEntradaTO);
     if ($id_estoque_entrada) {
         $ItemEstoqueEntradaTO = new ItemEstoqueEntradaTO();
         $ItemEstoqueEntradaDao = new ItemEstoqueEntradaDao();
         $dadosTrigger = new stdClass();
         $dadosTrigger->acao_movimentacao = 'ENTRADA';
         $dadosTrigger->id_tipo_movimentacao_estoque = 3;
         $dadosTrigger->id_estoque_entrada = $id_estoque_entrada;
         $dadosTrigger->id_responsavel = $EstoqueEntradaTO->id_usuario;
         $dadosTrigger->id_pedido_fornecedor = $EstoqueEntradaTO->id_pedido_fornecedor;
         $dadosTrigger->id_empreendimento = $EstoqueEntradaTO->id_empreendimento;
         foreach ($_POST['itens'] as $key => $value) {
             $ItemEstoqueEntradaTO->id_estoque_entrada = $id_estoque_entrada;
             $ItemEstoqueEntradaTO->id_produto = $value['id_produto'];
             $ItemEstoqueEntradaTO->qtd_item = isset($value['qtd']) ? $value['qtd'] : 0;
             $ItemEstoqueEntradaTO->vlr_custo = removeMaskNumber($value['custo']);
             $ItemEstoqueEntradaTO->perc_imposto = isset($value['imposto']) ? removeMaskNumber($value['imposto']) : 0;
             $ItemEstoqueEntradaTO->perc_desconto = isset($value['desconto']) ? removeMaskNumber($value['desconto']) : 0;
             $ItemEstoqueEntradaTO->dta_validade = $value['dta_validade'];
             $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->id_item_estoque_entrada = $id_item_estoque_entrada;
                 $dadosTrigger->qtd_entrada = $EstoqueTO->qtd_item;
                 if (!$EstoqueDao->atualizaEstoque($EstoqueTO, 'update', $dadosTrigger)) {
                     Flight::halt(500, 'erro ao atualizar estoque');
                 }
                 $PrecoProdutoTO->id_produto = $value['id_produto'];
                 $PrecoProdutoTO->id_empreendimento = $EstoqueEntradaTO->id_empreendimento;
                 $PrecoProdutoTO->vlr_custo = removeMaskNumber($value['custo']);
                 $PrecoProdutoTO->perc_imposto_compra = isset($value['imposto']) ? removeMaskNumber($value['imposto']) : 0;
                 $PrecoProdutoTO->perc_desconto_compra = isset($value['desconto']) ? removeMaskNumber($value['desconto']) : 0;
                 //$PrecoProdutoTO->perc_venda_atacado        = $value['margem_atacado'];
                 //$PrecoProdutoTO->perc_venda_intermediario  = $value['margem_intermediario'];
                 //$PrecoProdutoTO->perc_venda_varejo         = $value['margem_varejo'];
                 if (!$PrecoProdutoDao->atualizaVlrCusto($PrecoProdutoTO)) {
                     Flight::halt(500, 'erro ao atualizar preço');
                 }
             } else {
                 Flight::halt(500, 'erro ao inserir itens da entrada');
             }
         }
         Flight::halt(201);
     } else {
         Flight::halt(500, 'erro ao inserir entrada no estoque');
     }
 }