public static function BaixaProdutoClinica()
 {
     try {
         $id_empreendimento = $_POST['id_empreendimento'];
         $id_deposito = $_POST['id_deposito'];
         $id_usuario = $_POST['id_usuario'];
         $id_profissional = $_POST['id_profissional'];
         $produtos = $_POST['produtos'];
         $EstoqueDao = new EstoqueDao();
         $out = array();
         $out_desconto = array();
         $produtos_estoque = array();
         foreach ($produtos as $key => $value) {
             if (!isset($produtos_estoque[$value['id']])) {
                 $produtos_estoque[$value['id']]['qtd_saida'] = 0;
                 $produtos_estoque[$value['id']]['id'] = $value['id'];
             }
             $produtos_estoque[$value['id']]['qtd_saida'] += (int) $value['qtd_saida'];
         }
         foreach ($produtos_estoque as $key => $value) {
             $qtd_saida = (int) $value['qtd_saida'];
             $estoque = $EstoqueDao->getQtdProduto($id_empreendimento, $value['id'], null, $id_deposito);
             $estoque_real = $estoque - $qtd_saida;
             if ($estoque_real < 0) {
                 $out[$value['id']] = array('qtd_saida' => $qtd_saida, 'qtd_estoque' => $estoque);
             }
         }
         if (count($out) > 0) {
             Flight::response()->status(406)->header('Content-Type', 'application/json')->write(json_encode(array('out_estoque' => $out)))->send();
             return;
         }
         $EstoqueDao = new EstoqueDao();
         $EstoqueDao->baixaEstoqueClinica($id_empreendimento, $produtos, $id_deposito, null, $id_usuario, $id_profissional, 1);
     } catch (Exception $e) {
         jsonException($e);
     }
 }
        $value['status'] = "sucesso";
    } else {
        $value['status'] = "erro";
    }
    echo json_encode($value);
    /*
     * editar cliente
     */
} elseif ($act == "edit") {
    /*
     * dados do formulário de produto
     */
    $id = $_POST['id'];
    $v1 = $_POST['add-quantidade'];
    $v2 = $_POST['quantidade'];
    $total = $v1 + $v2;
    /*
     * setando modelo de produto
     */
    $estoque = new Estoque();
    $estoque->setId($id);
    $estoque->setQuantidade($total);
    $estoqueDAO = new EstoqueDao();
    $estoqueDAO->addEstoque($estoque);
    if ($estoqueDAO) {
        $value['status'] = "sucesso";
    } else {
        $value['status'] = "erro";
    }
    echo json_encode($value);
}
 public function getAnaliticoEstoque($id_deposito, $id_empreendimento, $offset, $limit)
 {
     $sql = "SELECT\n\t\t\t\t\tpro.id,\n\t\t\t\t\tpro.nome,\n\t\t\t\t\tfab.nome_fabricante,\n\t\t\t\t\ttcp.nome_cor AS sabor,\n\t\t\t\t\ttt.nome_tamanho AS peso,\n\t\t\t\t\test.qtd_item,\n\t\t\t\t\test.dta_validade,\n\t\t\t\t\ttpp.vlr_custo,\n\t\t\t\t\ttpp.perc_imposto_compra,\n\t\t\t\t\ttpp.perc_desconto_compra,\n\t\t\t\t\ttpp.perc_venda_atacado,\n\t\t\t\t\ttpp.perc_venda_intermediario,\n\t\t\t\t\ttpp.perc_venda_varejo\n\t\t\t\tFROM tbl_preco_produto \t\tAS tpp\n\t\t\t\tINNER JOIN tbl_estoque \t\tAS est ON est.id_produto = tpp.id_produto\n\t\t\t\tINNER JOIN tbl_produtos \tAS pro ON pro.id = tpp.id_produto\n\t\t\t\tLEFT JOIN tbl_cor_produto               AS tcp ON tcp.id = pro.id_cor \n\t\t\t\tLEFT JOIN tbl_tamanho                   AS tt ON tt.id = pro.id_tamanho\n\t\t\t\tLEFT JOIN tbl_fabricante \tAS fab ON fab.id = pro.id_fabricante\n\t\t\t\tWHERE est.id_deposito = {$id_deposito} and tpp.id_empreendimento = {$id_empreendimento}\n\t\t\t\tORDER BY pro.nome ASC, tt.nome_tamanho ASC , tcp.nome_cor ASC";
     if ($limit > 0) {
         $pag = $offset / $limit + 1;
         $Paginacao = new PaginacaoController($sql);
         $Paginacao->num_paginas = 10;
         $Paginacao->resultados_pagina = $limit;
         $Paginacao->paginarResultado($pag);
         $links_paginacao = $Paginacao->paginasDisponiveis($pag);
         $sql = $Paginacao->_sql_paginacao;
     }
     $select = $this->conn->prepare($sql);
     if ($select->execute()) {
         if ($select->rowCount() > 0) {
             $data['dados'] = $select->fetchAll(PDO::FETCH_ASSOC);
             $prdDao = new ProdutoDao();
             $estDao = new EstoqueDao();
             // Calculando preços de custo e venda, e disponbilidade de estoque
             foreach ($data['dados'] as $key => $value) {
                 $data['dados'][$key]['vlr_custo'] = (double) $data['dados'][$key]['vlr_custo'];
                 $data['dados'][$key]['perc_imposto_compra'] = (double) $data['dados'][$key]['perc_imposto_compra'];
                 $data['dados'][$key]['perc_desconto_compra'] = (double) $data['dados'][$key]['perc_desconto_compra'];
                 $data['dados'][$key]['perc_venda_atacado'] = (double) $data['dados'][$key]['perc_venda_atacado'];
                 $data['dados'][$key]['perc_venda_intermediario'] = (double) $data['dados'][$key]['perc_venda_intermediario'];
                 $data['dados'][$key]['perc_venda_varejo'] = (double) $data['dados'][$key]['perc_venda_varejo'];
                 $data['dados'][$key]['vlr_custo_total'] = 0;
                 $data['dados'][$key]['vlr_total_venda_atacado'] = 0;
                 $data['dados'][$key]['vlr_total_venda_intermediario'] = 0;
                 $data['dados'][$key]['vlr_total_venda_varejo'] = 0;
                 $vlr_custo_real = $prdDao->calculaValorCustoReal($data['dados'][$key]['vlr_custo'], $data['dados'][$key]['perc_imposto_compra'], $data['dados'][$key]['perc_desconto_compra']);
                 $data['dados'][$key]['id'] = (int) $data['dados'][$key]['id'];
                 $data['dados'][$key]['qtd_item'] = (int) $data['dados'][$key]['qtd_item'];
                 $data['dados'][$key]['vlr_custo_real'] = $vlr_custo_real;
                 $data['dados'][$key]['vlr_venda_atacado'] = $prdDao->calculaValorVenda($vlr_custo_real, $data['dados'][$key]['perc_venda_atacado']);
                 $data['dados'][$key]['vlr_venda_intermediario'] = $prdDao->calculaValorVenda($vlr_custo_real, $data['dados'][$key]['perc_venda_intermediario']);
                 $data['dados'][$key]['vlr_venda_varejo'] = $prdDao->calculaValorVenda($vlr_custo_real, $data['dados'][$key]['perc_venda_varejo']);
                 $data['dados'][$key]['qtd_item'] = $estDao->getQtdProduto($id_empreendimento, $data['dados'][$key]['id'], $data['dados'][$key]['dta_validade']);
                 if ($data['dados'][$key]['qtd_item'] == 0) {
                     unset($data['dados'][$key]);
                 } else {
                     $data['dados'][$key]['vlr_custo_total'] += $data['dados'][$key]['qtd_item'] * $data['dados'][$key]['vlr_custo_real'];
                     $data['dados'][$key]['vlr_total_venda_atacado'] += $data['dados'][$key]['qtd_item'] * $data['dados'][$key]['vlr_venda_atacado'];
                     $data['dados'][$key]['vlr_total_venda_intermediario'] += $data['dados'][$key]['qtd_item'] * $data['dados'][$key]['vlr_venda_intermediario'];
                     $data['dados'][$key]['vlr_total_venda_varejo'] += $data['dados'][$key]['qtd_item'] * $data['dados'][$key]['vlr_venda_varejo'];
                 }
             }
             $data['paginacao'] = isset($links_paginacao) ? $links_paginacao : null;
             return $data;
         } else {
             return false;
         }
     } else {
         return false;
     }
 }
Beispiel #4
0
<?php

/*
 * import de classes
 */
require_once '../../lib/jqsImports/JqsAutoImports.php';
$JqsAutoImports = new JqsAutoImports();
$id = $_GET['id'];
$estoque = new EstoqueDao();
$est = $estoque->localizarEstoque($id);
?>

<!DOCTYPE html>
<html>
	<head>				
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width, initial-scale=1" />
		
		<title>Preciata</title>		
		<link href="../assets/bootstrap-3.3.6-dist/css/bootstrap.min.css" rel="stylesheet" />
		<link href="../assets/estilo_custom.css" rel="stylesheet" />			
		
		<script src="//code.jquery.com/jquery-1.12.0.min.js"></script>
		<script src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
		
		<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
		<script src="//code.jquery.com/jquery-1.10.2.js"></script>
		<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
		<link rel="stylesheet" href="/resources/demos/style.css" />				
		
		<script type="text/javascript" src="../assets/scripts/produtos.js"></script>
 public static function getProdutosEstoque($estoque_min, $offset, $limit)
 {
     $estoque_min = strtolower($estoque_min) == 'null' ? null : $estoque_min;
     $EstoqueDao = new EstoqueDao();
     $produtos = $EstoqueDao->getProdutosEstoque($estoque_min, $offset, $limit, $_GET);
     if ($produtos) {
         Flight::json($produtos);
     } else {
         Flight::halt(404, 'Produtos não encontrados');
     }
 }
 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 function getProdutosExport($offset, $limit, $busca)
 {
     $offset = $offset == null ? 0 : $offset;
     $limit = $limit == null ? 0 : $limit;
     $id_empreendimento = null;
     if (array_key_exists('tpe->id_empreendimento', $busca)) {
         $id_empreendimento = $busca['tpe->id_empreendimento'];
     }
     $sql = "SELECT DISTINCT\n\t\t\t\t\tpro.id as id_produto,\n\t\t\t\t\tpro.nome ,\n\t\t\t\t\tfab.nome_fabricante,\n\t\t\t\t\tpro.peso,\n\t\t\t\t\tNULL AS qtd_item,\n\t\t\t\t\tROUND((tpp.vlr_custo + (tpp.vlr_custo * tpp.perc_imposto_compra)) - (tpp.vlr_custo * tpp.perc_desconto_compra),2) AS vlr_custo_real,\n\t\t\t\t\tROUND(ROUND((tpp.vlr_custo + (tpp.vlr_custo * tpp.perc_imposto_compra)) - (tpp.vlr_custo * tpp.perc_desconto_compra),2) + (ROUND((tpp.vlr_custo + (tpp.vlr_custo * tpp.perc_imposto_compra)) - (tpp.vlr_custo * tpp.perc_desconto_compra),2) * perc_venda_atacado),2) AS vlr_venda_atacado,\n\t\t\t\t\tROUND(ROUND((tpp.vlr_custo + (tpp.vlr_custo * tpp.perc_imposto_compra)) - (tpp.vlr_custo * tpp.perc_desconto_compra),2) + (ROUND((tpp.vlr_custo + (tpp.vlr_custo * tpp.perc_imposto_compra)) - (tpp.vlr_custo * tpp.perc_desconto_compra),2) * perc_venda_intermediario),2) AS vlr_venda_intermediario,\n\t\t\t\t\tROUND(ROUND((tpp.vlr_custo + (tpp.vlr_custo * tpp.perc_imposto_compra)) - (tpp.vlr_custo * tpp.perc_desconto_compra),2) + (ROUND((tpp.vlr_custo + (tpp.vlr_custo * tpp.perc_imposto_compra)) - (tpp.vlr_custo * tpp.perc_desconto_compra),2) * perc_venda_varejo),2) AS vlr_venda_varejo,\n\t\t\t\t\ttpp.perc_venda_atacado,\n\t\t\t\t\ttpp.perc_venda_intermediario,\n\t\t\t\t\ttpp.perc_venda_varejo\n\t\t\t\tFROM tbl_produtos \t\t\t\t\t\tAS pro\n\t\t\t\tLEFT JOIN tbl_fabricante \t\t\t\tAS fab ON pro.id_fabricante = fab.id\n\t\t\t\tLEFT JOIN tbl_produto_empreendimento \tAS tpe ON tpe.id_produto = pro.id\n\t\t\t\tLEFT JOIN tbl_preco_produto \t\t\tAS tpp ON tpp.id_produto = pro.id\n\t\t\t\tLEFT JOIN tbl_estoque \t\t\t\t\tAS est ON est.id_produto = pro.id ";
     if (is_array($busca) && count($busca) > 0) {
         $where = prepareWhere($busca);
         $sql .= " WHERE " . $where;
     }
     $sql .= " GROUP BY pro.id ";
     $sql .= " ORDER BY pro.id ASC ";
     if ($limit > 0) {
         $pag = $offset / $limit + 1;
         $Paginacao = new PaginacaoController($sql);
         $Paginacao->num_paginas = 10;
         $Paginacao->resultados_pagina = $limit;
         $Paginacao->paginarResultado($pag);
         $links_paginacao = $Paginacao->paginasDisponiveis($pag);
         $sql = $Paginacao->_sql_paginacao;
     }
     $select = $this->conn->prepare($sql);
     if ($select->execute()) {
         if ($select->rowCount() > 0) {
             $FornecedorDao = new FornecedorDao();
             $EstoqueDao = new EstoqueDao();
             $produtos = $select->fetchAll(PDO::FETCH_ASSOC);
             foreach ($produtos as $key => $value) {
                 if (!is_null($id_empreendimento)) {
                     $produtos[$key]['perc_venda_atacado'] = number_format($produtos[$key]['perc_venda_atacado'] * 100, 2, ',', '.');
                 }
                 $produtos[$key]['perc_venda_intermediario'] = number_format($produtos[$key]['perc_venda_intermediario'] * 100, 2, ',', '.');
                 $produtos[$key]['perc_venda_varejo'] = number_format($produtos[$key]['perc_venda_varejo'] * 100, 2, ',', '.');
                 $produtos[$key]['vlr_custo_real'] = number_format($produtos[$key]['vlr_custo_real'], 2, ',', '.');
                 $produtos[$key]['vlr_venda_atacado'] = number_format($produtos[$key]['vlr_venda_intermediario'], 2, ',', '.');
                 $produtos[$key]['vlr_venda_intermediario'] = number_format($produtos[$key]['vlr_venda_intermediario'], 2, ',', '.');
                 $produtos[$key]['vlr_venda_varejo'] = number_format($produtos[$key]['vlr_venda_varejo'], 2, ',', '.');
                 $produtos[$key]['qtd_item'] = $EstoqueDao->getQtdProduto($id_empreendimento, $value['id_produto'], null, null);
             }
             $head = array("ID", "Produto", "Fabricante", "Peso", "Qtd", "Vlr Custo", "Vlr Atacado", "Vlr Intermediário", "Vlr Varejo", "% Atacado", "% Intermediário", "% Varejo");
             $filename = "example";
             header("Content-type: text/csv");
             header("Content-Disposition: attachment; filename={$filename}.csv");
             header("Pragma: no-cache");
             header("Expires: 0");
             $outputBuffer = fopen("php://output", 'w');
             fputcsv($outputBuffer, $head);
             foreach ($produtos as $val) {
                 fputcsv($outputBuffer, $val);
             }
             fclose($outputBuffer);
             die;
             return $produtos;
         } else {
             return false;
         }
     } else {
         return false;
     }
 }
 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 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));
 }
 public function atualizaEstoquePrestaShop($id_empreendimento, $id_item, $id_item_referencia, $id_combinaco)
 {
     $xmlProduto = $this->webService->get(array('resource' => 'products', 'id' => $id_item_referencia));
     $resourcesProduto = $xmlProduto->children()->children();
     $stock_available = $resourcesProduto->xpath('//stock_availables[id_product_attribute=' . $id_combinaco . ']');
     if (count($stock_available) != 1) {
         return array('status' => false, 'errors' => array(array("id stock_availables não pode ser encontrado")));
     }
     $xml = $this->webService->get(array('resource' => 'stock_availables', 'id' => $stock_available[0]->id));
     $resources = $xml->children()->children();
     $ConfiguracaoDao = new ConfiguracaoDao();
     $config = $ConfiguracaoDao->getConfiguracoes($id_empreendimento);
     $prestashop_depositos = isset($config['prestashop_depositos']) && is_array(json_decode($config['prestashop_depositos'])) ? json_decode($config['prestashop_depositos']) : array();
     $EstoqueDao = new EstoqueDao();
     $estoque = $EstoqueDao->getEstoque(null, null, array('prd.id' => $id_item, 'emp->id_empreendimento' => $id_empreendimento));
     $estoque = isset($estoque['produtos']) && is_array($estoque['produtos']) ? $estoque['produtos'] : array();
     $qtd_estoque = 0;
     foreach ($estoque as $item) {
         if (in_array($item['id_deposito'], $prestashop_depositos)) {
             $qtd_estoque += (int) $item['qtd_item'];
         }
     }
     $resources->quantity = $qtd_estoque;
     try {
         $opt = array('resource' => 'stock_availables');
         $opt['id'] = $stock_available[0]->id;
         $opt['putXml'] = $xml->asXML();
         $xml = $this->webService->edit($opt);
         return array('status' => true, 'responseXml' => $xml->asXML(), 'stock_availables' => $xml->stock_availables);
     } catch (PrestaShopWebserviceException $e) {
         return array('status' => false, 'errors' => $this->webService->response->errors);
     }
 }
 public function salveInventarioSimples($inventario = null, $id_empreendimento = null)
 {
     $InventarioTO = new InventarioTO();
     $InventarioDao = new InventarioDao();
     foreach ($inventario as $item_inventario) {
         if ($item_inventario['tipo'] == 'entrada') {
             $InventarioTO->id_deposito = isset($item_inventario['id_deposito']) ? $item_inventario['id_deposito'] : '';
             $InventarioTO->flg_tela_produto = 1;
             $InventarioTO->id_usuario_responsavel = isset($item_inventario['id_usuario_responsavel']) ? $item_inventario['id_usuario_responsavel'] : '';
             $InventarioTO->dta_contagem = isset($item_inventario['dta_contagem']) ? date('Y-m-d H:m:s', strtotime(str_replace('/', '-', $item_inventario['dta_contagem']))) : '';
             $validator = new DataValidator();
             $validator->set_msg('A escolha do deposito é obrigatório')->set('nome_deposito', $InventarioTO->id_deposito)->is_required();
             $validator->set_msg('O codigo do pedido é obrigatório')->set('id_usuario_responsavel', $InventarioTO->id_usuario_responsavel)->is_required();
             $validator->set_msg('A data do inventario é obrigatória')->set('dta_contagem', $InventarioTO->dta_contagem)->is_date('Y-m-d H:m:s');
             if (!$validator->validate()) {
                 Flight::response()->status(406)->header('Content-Type', 'application/json')->write(json_encode($validator->get_errors()))->send();
                 return;
             }
             $id_inventario = $InventarioDao->salveInventario($InventarioTO);
             if ($id_inventario) {
                 $ItemInventarioTO = new ItemInventarioTO();
                 $ItemInventarioDao = new ItemInventarioDao();
                 $EstoqueTO = new EstoqueTO();
                 $EstoqueDao = new EstoqueDao();
                 var_dump($item_inventario);
                 die;
                 foreach ($item_inventario['itens'] as $key => $value) {
                     $ItemInventarioTO->id_inventario = $id_inventario;
                     $ItemInventarioTO->id_produto = $value['id'];
                     $ItemInventarioTO->qtd_contagem = $value['qtd_ivn'];
                     $ItemInventarioTO->dta_validade = $value['dta_validade'];
                     $id_item_inventario = $ItemInventarioDao->saveItemInventario($ItemInventarioTO);
                     if (!$id_item_inventario) {
                         Flight::halt(500, 'erro ao inserir itens do inventario');
                     }
                     $total_item = 0;
                     foreach ($item_inventario['itens'] as $key_item => $val) {
                         if ($val['id'] == $value['id']) {
                             $total_item += (int) $val['qtd_ivn'];
                         }
                     }
                     $EstoqueTO->id_deposito = $item_inventario['id_deposito'];
                     $EstoqueTO->dta_validade = $value['dta_validade'];
                     $EstoqueTO->id_produto = $value['id'];
                     $EstoqueTO->qtd_item = $value['qtd_ivn'];
                     $dadosTrigger = new stdClass();
                     $dadosTrigger->acao_movimentacao = 'INVENTÁRIO';
                     $dadosTrigger->id_tipo_movimentacao_estoque = 7;
                     $dadosTrigger->id_inventario = $id_inventario;
                     $dadosTrigger->id_responsavel = $InventarioTO->id_usuario_responsavel;
                     $dadosTrigger->id_empreendimento = $id_empreendimento;
                     $dadosTrigger->id_item_inventario = $id_item_inventario;
                     $dadosTrigger->qtd_entrada = $EstoqueTO->qtd_item;
                     if (!$EstoqueDao->atualizaEstoque($EstoqueTO, 'set', $dadosTrigger)) {
                         Flight::halt(500, 'erro ao atualizar estoque');
                     }
                 }
             } else {
                 Flight::halt(500, 'erro ao inserir inventario');
             }
         } else {
             if ($item_inventario['tipo'] == 'saida') {
                 $EstoqueDao = new EstoqueDao();
                 $id_empreendimento = $item_inventario['id_empreendimento'];
                 $id_produto = $item_inventario['id_produto'];
                 $id_deposito = $item_inventario['id_deposito'];
                 $qtd_saida = $item_inventario['qtd_saida'];
                 if (!$EstoqueDao->baixaEstoqueSimples($id_empreendimento, $id_produto, $id_deposito, $qtd_saida)) {
                     Flight::halt(500, 'error ao atualizar estoque');
                 }
             }
         }
     }
 }
    }
    echo json_encode($value);
    /*
     * localizar produto
     */
} elseif ($act == "find_cli") {
    $param = $_POST['fdBuscarCliente'];
    $loteDao = new LoteDao();
    $rs = $loteDao->buscarCliente($param);
    echo $rs;
    /*
     * localizar produtos em estoque
     */
} elseif ($act == "find") {
    @($param = $_POST['fdBuscarEstoque']);
    $estoqueDao = new EstoqueDao();
    $rs = $estoqueDao->listarEstoque($param);
    echo $rs;
    /*
     * Listar lotes
     */
} elseif ($act == "list") {
    $param = $_POST['fdBuscarLote'];
    $loteDao = new LoteDao();
    $rs = $loteDao->listarLote($param);
    echo $rs;
    /*
     * excluir cliente
     */
} elseif ($act == "list_itens") {
    @($param = $_POST['idLote']);
 public static function baixaEstoque($id_empreendimento, $id_usuario, $produtos, $id_transferencia_estoque, $validade = false)
 {
     $EstoqueSaidaTO = new EstoqueSaidaTO();
     $EstoqueSaidaDao = new EstoqueSaidaDao();
     $EstoqueDao = new EstoqueDao();
     $EstoqueSaidaTO->id_empreendimento = $id_empreendimento;
     $EstoqueSaidaTO->id_usuario = $id_usuario;
     $EstoqueSaidaTO->id_transferencia_estoque = $id_transferencia_estoque;
     $id_estoque_saida = $EstoqueSaidaDao->saveEstoqueSaida($EstoqueSaidaTO);
     foreach ($produtos as $key => $produto) {
         if ((int) $produto['qtd_transferida'] > 0) {
             $busca = array("orderby" => " etq.qtd_item DESC,dta_validade ASC ", "etq.id_deposito" => $produto['id_deposito_saida'], "prd.id" => $produto['id_produto'], "etq.qtd_item" => array('exp' => '>0'));
             if ($validade) {
                 $busca['etq.dta_validade'] = $produto['dta_validade'];
             }
             $estoque = parse_arr_values($EstoqueDao->getEstoque(null, null, $busca), 'all');
             $estoque = $estoque['produtos'];
             $estoque_saida = array();
             $qtd_saida_restante = $produto['qtd_transferida'];
             foreach ($estoque as $key => $value) {
                 $qtd_item = $value['qtd_item'];
                 if ($qtd_item >= $qtd_saida_restante) {
                     $estoque_saida[] = array('id' => $value['id'], 'qtd_item' => $qtd_item - $qtd_saida_restante, 'dta_validade' => $value['dta_validade'], 'qtd_saida' => $qtd_saida_restante, 'id_deposito' => $value['id_deposito'], 'id_produto' => $value['id_produto']);
                     break;
                 } else {
                     $qtd_saida_restante = abs($qtd_item - $qtd_saida_restante);
                     $estoque_saida[] = array('id' => $value['id'], 'qtd_item' => 0, 'dta_validade' => $value['dta_validade'], 'qtd_saida' => $qtd_item, 'id_deposito' => $value['id_deposito'], 'id_produto' => $value['id_produto']);
                 }
             }
             $sql = "";
             $ItemEstoqueSaidaTO = new ItemEstoqueSaidaTO();
             $ItemEstoqueSaidaDao = new ItemEstoqueSaidaDao();
             foreach ($estoque_saida as $key => $value) {
                 $ItemEstoqueSaidaTO->id_estoque_saida = $id_estoque_saida;
                 $ItemEstoqueSaidaTO->id_deposito = $value['id_deposito'];
                 $ItemEstoqueSaidaTO->id_produto = $value['id_produto'];
                 $ItemEstoqueSaidaTO->dta_validade = $value['dta_validade'];
                 $ItemEstoqueSaidaTO->qtd_item = $value['qtd_saida'];
                 $id_item_estoque_saida = $ItemEstoqueSaidaDao->saveItemEstoqueSaida($ItemEstoqueSaidaTO);
                 if (!$id_item_estoque_saida) {
                     return false;
                 }
                 $dadosTrigger = new StdClass();
                 $dadosTrigger->qtd_saida = $value['qtd_saida'];
                 $dadosTrigger->acao_movimentacao = 'SAIDA';
                 $dadosTrigger->id_tipo_movimentacao_estoque = 5;
                 $dadosTrigger->id_estoque_saida = $id_estoque_saida;
                 $dadosTrigger->id_item_estoque_saida = $id_item_estoque_saida;
                 $dadosTrigger->id_responsavel = $id_usuario;
                 $dadosTrigger->id_empreendimento = $id_empreendimento;
                 $dadosTrigger->id_transferencia = $id_transferencia_estoque;
                 $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}';";
                         }
                     }
                 }
                 $sql = 'UPDATE tbl_estoque SET qtd_item = ' . $value['qtd_item'] . ', dta_ultima_atualizacao = NOW() WHERE id = ' . $value['id'] . ';';
                 $EstoqueDao->rumQuery($varTriggerSql, false);
                 $EstoqueDao->rumQuery($sql, false);
             }
             /*foreach ($estoque_saida as $key => $value) {
             			$sql .= 'UPDATE tbl_estoque SET qtd_item = '.$value['qtd_item'].', dta_ultima_atualizacao = NOW() WHERE id = '.$value['id'].';';
             		}
             		$EstoqueDao->rumQuery($sql);*/
         }
     }
     return true;
 }
 public function getAcessorios($id_empreendimento, $offset, $limit, $busca = array())
 {
     $offset = $offset == null ? 0 : $offset;
     $limit = $limit == null ? 0 : $limit;
     $sql = "SELECT \n\t\t\t\t\ttp.id \t\t\tAS id_produto,\n\t\t\t\t\ttp.nome \t\tAS nome_produto,\n\t\t\t\t\ttt.id \t\t\tAS id_tamanho,\n\t\t\t\t\ttt.nome_tamanho,\n\t\t\t\t\ttcp.id \t\t\tAS id_cor,\n\t\t\t\t\ttcp.nome_cor,\n\t\t\t\t\ttf.id \t\t\tAS id_fabricante,\n\t\t\t\t\ttf.nome_fabricante,\n\t\t\t\t\ttpp.perc_desconto_compra,tpp.perc_imposto_compra,tpp.perc_venda_atacado,tpp.perc_venda_intermediario,tpp.perc_venda_varejo,\n\t\t\t\t\tROUND(( ifnull(tpp.vlr_custo,0) + (ifnull(tpp.vlr_custo,0) * ifnull(tpp.perc_imposto_compra,0) )) - ( ( ifnull(tpp.vlr_custo,2) + (ifnull(tpp.vlr_custo,0) * ifnull(tpp.perc_imposto_compra,0) )) * ifnull(tpp.perc_desconto_compra,0)   ) ,2) AS vlr_custo_real,\n\t\t\t\t\tROUND(ROUND((ifnull(tpp.vlr_custo,0) + (ifnull(tpp.vlr_custo,0) * ifnull(tpp.perc_imposto_compra,0))) - (ifnull(tpp.vlr_custo,0) * ifnull(tpp.perc_desconto_compra,0)),2) + (ROUND((ifnull(tpp.vlr_custo,0) + (ifnull(tpp.vlr_custo,0) * ifnull(tpp.perc_imposto_compra,0))) - (ifnull(tpp.vlr_custo,0) * ifnull(tpp.perc_desconto_compra,0)),2) * ifnull(perc_venda_atacado,0)),2) AS vlr_venda_atacado,\n\t\t\t\t\tROUND(ROUND((ifnull(tpp.vlr_custo,0) + (ifnull(tpp.vlr_custo,0) * ifnull(tpp.perc_imposto_compra,0))) - (ifnull(tpp.vlr_custo,0) * ifnull(tpp.perc_desconto_compra,0)),2) + (ROUND((ifnull(tpp.vlr_custo,0) + (ifnull(tpp.vlr_custo,0) * ifnull(tpp.perc_imposto_compra,0))) - (ifnull(tpp.vlr_custo,0) * ifnull(tpp.perc_desconto_compra,0)),2) * ifnull(perc_venda_intermediario,0)),2) AS vlr_venda_intermediario,\n\t\t\t\t\tROUND(ROUND((ifnull(tpp.vlr_custo,0) + (ifnull(tpp.vlr_custo,0) * ifnull(tpp.perc_imposto_compra,0))) - (ifnull(tpp.vlr_custo,0) * ifnull(tpp.perc_desconto_compra,0)),2) + (ROUND((ifnull(tpp.vlr_custo,0) + (ifnull(tpp.vlr_custo,0) * ifnull(tpp.perc_imposto_compra,0))) - (ifnull(tpp.vlr_custo,0) * ifnull(tpp.perc_desconto_compra,0)),2) * ifnull(perc_venda_varejo,0)),2) AS vlr_venda_varejo\n\t\t\t\tFROM tbl_produtos AS tp\n\t\t\t\tINNER JOIN tbl_produto_empreendimento \t\tAS tpe \t\tON tp.id \t\t\t= tpe.id_produto \n\t\t\t\tINNER JOIN tbl_valor_campo_extra_produto \tAS tvcep \tON tp.id \t\t\t= tvcep.id_produto \n\t\t\t\tINNER JOIN tbl_campo_extra_produto \t\t\tAS tcep \tON tvcep.id_campo \t= tcep.id \n\t\t\t\tLEFT JOIN tbl_cor_produto \t\t\t\t\tAS tcp \t\tON tp.id_cor \t\t= tcp.id \n\t\t\t\tLEFT JOIN tbl_tamanho \t\t\t\t\t\tAS tt \t\tON tp.id_tamanho \t= tt.id \n\t\t\t\tLEFT JOIN tbl_fabricante \t\t\t\t\tAS tf \t\tON tp.id_fabricante = tf.id\n\t\t\t\tLEFT JOIN tbl_preco_produto \t\t\t\tAS tpp \t\tON tpp.id_produto   = tp.id AND tpp.id_empreendimento = {$id_empreendimento} \n\t\t\t\tWHERE \n\t\t\t\t\ttpe.id_empreendimento  = {$id_empreendimento} AND \n\t\t\t\t\ttp.flg_excluido \t  != 1  \t\t\t\tAND \n\t\t\t\t\ttcep.nome_campo \t   = 'flg_acessorio' \tAND \n\t\t\t\t\ttvcep.valor_campo\t   = '1'\n\t\t\t \t";
     if (is_array($busca) && count($busca) > 0) {
         $where = prepareWhere($busca);
         $sql .= " AND " . $where;
     }
     if ($limit > 0) {
         $pag = $offset / $limit + 1;
         $Paginacao = new PaginacaoController($sql);
         $Paginacao->num_paginas = 10;
         $Paginacao->resultados_pagina = $limit;
         $Paginacao->paginarResultado($pag);
         $links_paginacao = $Paginacao->paginasDisponiveis($pag);
         $sql = $Paginacao->_sql_paginacao;
     }
     $select = $this->conn->prepare($sql);
     if ($select->execute()) {
         if ($select->rowCount() > 0) {
             $saida = array();
             $saida['acessorios'] = parse_arr_values($select->fetchAll(PDO::FETCH_ASSOC), 'all');
             $EstoqueDao = new EstoqueDao();
             foreach ($saida['acessorios'] as $key => $prd) {
                 $saida['acessorios'][$key]['qtd_real_estoque'] = $EstoqueDao->getQtdProduto($id_empreendimento, $prd['id_produto'], null, null);
             }
             $saida['paginacao'] = isset($links_paginacao) ? $links_paginacao : null;
             return $saida;
         } else {
             return false;
         }
     } else {
         throw new ExceptionJSON("Erro ao Buscar Acessorios#" . json_encode($select->errorInfo()), 4, ExceptionJSON::SELECT);
     }
 }
 public static function editItemComanda()
 {
     try {
         $ItemVendaTO = new ItemVendaTO();
         $MesaDao = new MesaDao();
         $Conexao = new Conexao();
         $Conexao::getInstance();
         $EstoqueDao = new EstoqueDao();
         $itemVenda = $ItemVendaTO->__setAll($_POST['campos'], true);
         $produtos[] = $_POST['campos'];
         $where = $_POST['where'];
         $out = array();
         foreach ($produtos as $key => $value) {
             if (!isset($produtos_estoque[$value['id_produto']])) {
                 $produtos_estoque[$value['id_produto']] = $value;
                 $produtos_estoque[$value['id_produto']]['qtd'] = 0;
                 $produtos_estoque[$value['id_produto']]['id_produto'] = $value['id_produto'];
             }
             $produtos_estoque[$value['id_produto']]['qtd'] += (int) $value['qtd'];
         }
         foreach ($produtos_estoque as $key => $value) {
             $qtd = (int) $value['qtd'];
             $estoque = $EstoqueDao->getQtdProduto($value['id_empreendimento'], $value['id_produto'], null, $value['id_deposito'], $value['id_venda']);
             $estoque_real = $estoque - $qtd;
             if ($estoque_real < 0) {
                 $out[] = array((double) $value['id_produto']);
             }
         }
         if (count($out) > 0) {
             $Conexao->rumQuery('UNLOCK TABLES;', false);
             Flight::response()->status(406)->header('Content-Type', 'application/json')->write(json_encode(array('out_estoque' => $out)))->send();
             return;
         }
         $MesaDao->editItemComanda($itemVenda, $where);
         $mesa = $MesaDao->getResumoMesa($_POST['id_mesa']);
         Flight::response()->status(200)->header('Content-Type', 'application/json')->write(json_encode(array('mesa' => $mesa)))->send();
     } catch (Exception $e) {
         jsonException($e);
     }
 }
 public static function saveVendaLoja()
 {
     $EstoqueDao = new EstoqueDao();
     $ConfiguracaoDao = new ConfiguracaoDao();
     $out = array();
     $produtos = $_POST['produtos'];
     $venda = $_POST['venda'];
     $id_empreendimento = $venda['id_empreendimento'];
     $config = $ConfiguracaoDao->getConfiguracoes($id_empreendimento);
     foreach ($produtos as $key => $value) {
         $qtd = (int) $value['qtd'];
         $estoque = $EstoqueDao->getQtdProduto($id_empreendimento, $value['id_produto']);
         $estoque_real = $estoque - $qtd;
         if ($estoque_real < 0) {
             $out[] = array($value['id_produto']);
         }
     }
     if (count($out) > 0) {
         Flight::response()->status(406)->header('Content-Type', 'application/json')->write(json_encode($out))->send();
         return;
     }
     $VendaDao = new VendaDao();
     $VendaTO = new VendaTO();
     $VendaTO->id_usuario = $config['id_usuario_venda_vitrine'];
     $VendaTO->id_cliente = isset($venda['id_cliente']) ? $venda['id_cliente'] : '';
     $VendaTO->venda_confirmada = isset($venda['venda_confirmada']) ? $venda['venda_confirmada'] : 0;
     $VendaTO->id_empreendimento = isset($venda['id_empreendimento']) ? $venda['id_empreendimento'] : '';
     $id_venda = $VendaDao->saveVenda($VendaTO);
     if (!$id_venda) {
         Flight::halt(500, 'erro ao inserir venda');
     }
     $ItemVendaDao = new ItemVendaDao();
     $ItemVendaTO = new ItemVendaTO();
     foreach ($produtos as $key => $value) {
         $ItemVendaTO->id_venda = $id_venda;
         $ItemVendaTO->id_produto = $value['id_produto'];
         $ItemVendaTO->desconto_aplicado = isset($value['desconto_aplicado']) ? $value['desconto_aplicado'] : 0;
         $ItemVendaTO->valor_desconto = isset($value['valor_desconto']) ? $value['valor_desconto'] : 0;
         $ItemVendaTO->qtd = $value['qtd'];
         $ItemVendaTO->valor_real_item = $value['valor_produto'];
         if (!$ItemVendaDao->saveItemVenda($ItemVendaTO)) {
             Flight::halt(500, 'erro ao inserir os itens da venda');
         }
     }
     Flight::halt(201);
 }
 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');
     }
 }