public static function updateProduto()
 {
     $ProdutoTO = new ProdutoTO();
     $ProdutoDao = new ProdutoDao();
     $validator = new DataValidator();
     $ProdutoTO->id = isset($_POST["id"]) ? $_POST["id"] : NULL;
     $ProdutoTO->meta_title = isset($_POST["meta_title"]) ? $_POST["meta_title"] : NULL;
     $ProdutoTO->meta_description = isset($_POST["meta_description"]) ? $_POST["meta_description"] : NULL;
     $ProdutoTO->descricao_curta = isset($_POST["descricao_curta"]) ? $_POST["descricao_curta"] : NULL;
     $ProdutoTO->img = isset($_POST["img"]) ? $_POST["img"] : NULL;
     $ProdutoTO->codigo_barra = isset($_POST["codigo_barra"]) ? $_POST["codigo_barra"] : NULL;
     $ProdutoTO->nome = isset($_POST["nome"]) ? $_POST["nome"] : NULL;
     $ProdutoTO->sabor = isset($_POST["sabor"]) ? $_POST["sabor"] : NULL;
     $ProdutoTO->peso = isset($_POST["peso"]) ? $_POST["peso"] : NULL;
     $ProdutoTO->valor_desconto_cliente = isset($_POST["valor_desconto_cliente"]) && !empty($_POST["valor_desconto_cliente"]) ? $_POST["valor_desconto_cliente"] : 0;
     $ProdutoTO->id_fabricante = isset($_POST["id_fabricante"]) && !empty($_POST["id_fabricante"]) ? $_POST["id_fabricante"] : NULL;
     $ProdutoTO->id_importador = isset($_POST["id_importador"]) && !empty($_POST["id_importador"]) ? $_POST["id_importador"] : NULL;
     $ProdutoTO->id_categoria = isset($_POST["id_categoria"]) && !empty($_POST["id_categoria"]) ? $_POST["id_categoria"] : NULL;
     $ProdutoTO->qtd_minima_estoque = isset($_POST["qtd_minima_estoque"]) ? $_POST["qtd_minima_estoque"] : NULL;
     $ProdutoTO->descricao = isset($_POST["descricao"]) ? $_POST["descricao"] : NULL;
     $ProdutoTO->flg_produto_composto = isset($_POST["flg_produto_composto"]) ? $_POST["flg_produto_composto"] : 0;
     $ProdutoTO->id_tamanho = isset($_POST["id_tamanho"]) && is_numeric($_POST["id_tamanho"]) && (int) $_POST["id_tamanho"] > 0 ? $_POST["id_tamanho"] : NULL;
     $ProdutoTO->id_cor = isset($_POST["id_cor"]) && is_numeric($_POST["id_cor"]) && (int) $_POST["id_cor"] > 0 ? $_POST["id_cor"] : NULL;
     $ProdutoTO->cod_ncm = isset($_POST["cod_ncm"]) && is_numeric($_POST["cod_ncm"]) ? $_POST["cod_ncm"] : NULL;
     $ProdutoTO->ex_tipi = isset($_POST["ex_tipi"]) && is_numeric($_POST["ex_tipi"]) ? $_POST["ex_tipi"] : NULL;
     $ProdutoTO->cod_especializacao_ncm = isset($_POST["cod_especializacao_ncm"]) && is_numeric($_POST["cod_especializacao_ncm"]) ? $_POST["cod_especializacao_ncm"] : NULL;
     $ProdutoTO->cod_forma_aquisicao = isset($_POST["cod_forma_aquisicao"]) && is_numeric($_POST["cod_forma_aquisicao"]) ? $_POST["cod_forma_aquisicao"] : NULL;
     $ProdutoTO->cod_origem_mercadoria = isset($_POST["cod_origem_mercadoria"]) && is_numeric($_POST["cod_origem_mercadoria"]) ? $_POST["cod_origem_mercadoria"] : NULL;
     $ProdutoTO->cod_tipo_tributacao_ipi = isset($_POST["cod_tipo_tributacao_ipi"]) && is_numeric($_POST["cod_tipo_tributacao_ipi"]) ? $_POST["cod_tipo_tributacao_ipi"] : NULL;
     $ProdutoTO->cod_regra_tributos = isset($_POST["cod_regra_tributos"]) && is_numeric($_POST["cod_regra_tributos"]) ? $_POST["cod_regra_tributos"] : NULL;
     $ProdutoTO->num_cest = isset($_POST["num_cest"]) && is_numeric($_POST["num_cest"]) ? $_POST["num_cest"] : NULL;
     $ProdutoTO->dsc_unidade_medida = isset($_POST["dsc_unidade_medida"]) ? $_POST["dsc_unidade_medida"] : NULL;
     $id_empreendimento = isset($_POST['id_empreendimento']) ? $_POST['id_empreendimento'] : "";
     $precos = isset($_POST['precos']) && is_array($_POST['precos']) ? $_POST['precos'] : array();
     $fornecedores = isset($_POST['fornecedores']) && is_array($_POST['fornecedores']) ? $_POST['fornecedores'] : array();
     $empreendimentos = isset($_POST['empreendimentos']) && is_array($_POST['empreendimentos']) ? $_POST['empreendimentos'] : array();
     $del_empreendimentos = isset($_POST['del_empreendimentos']) && is_array($_POST['del_empreendimentos']) ? $_POST['del_empreendimentos'] : array();
     $insumos = isset($_POST['insumos']) && is_array($_POST['insumos']) ? $_POST['insumos'] : array();
     $categorias = isset($_POST['categorias']) && is_array($_POST['categorias']) ? $_POST['categorias'] : array();
     if ($ProdutoTO->flg_produto_composto == 1) {
         if (!(isset($insumos) && is_array($insumos) && count($insumos) > 0)) {
             $validator->_errors['insumos'][] = 'É obrigatório informar ao menos um insumo para compor o produto';
         }
     }
     /*
     $validator->set_msg('O ID do produto é obrigatório')
     		  ->set('id',$ProdutoTO->id)
     		  ->is_required();
     
     $validator->set_msg('O codigo do empreendimento é obrigatório')
     		  ->set('id_empreendimento',$id_empreendimento)
     		  ->is_required();
     
     $validator->set_msg('O codigo de barra do produto é obrigatório')
     		  ->set('codigo_barra',$ProdutoTO->codigo_barra)
     		  ->is_required();
     
     $validator->set_msg('O nome do produto é obrigatório')
     		  ->set('nome',$ProdutoTO->nome)
     		  ->is_required();
     
     $validator->set_msg('O sabor do produto é obrigatório')
     		  ->set('sabor',$ProdutoTO->sabor)
     		  ->is_required();
     
     $validator->set_msg('O peso do produto é obrigatório')
     		  ->set('peso',$ProdutoTO->peso)
     		  ->is_required();
     
     $validator->set_msg('O fabricante do produto é obrigatório')
     		  ->set('id_fabricante',$ProdutoTO->id_fabricante)
     		  ->is_required();
     
     $validator->set_msg('O importador do produto é obrigatório')
     		  ->set('id_importador',$ProdutoTO->id_importador)
     		  ->is_required();
     
     $validator->set_msg('A categoria do produto é obrigatório')
     		  ->set('id_categoria',$ProdutoTO->id_categoria)
     		  ->is_required();
     
     $validator->set_msg('A quantidade minina do produto é obrigatório')
     		  ->set('qtd_minima_estoque',$ProdutoTO->qtd_minima_estoque)
     		  ->is_required();
     
     if(!(isset($fornecedores) && is_array($fornecedores) && count($fornecedores) > 0)){
     	$validator->_errors['fornecedores'][] = 'É obrigatório informar pelo menos um fornecedor';
     }
     
     
     $preco['vlr_custo']                = isset($preco['vlr_custo'])                ?  $preco['vlr_custo']                : 0 ;
     $preco['perc_imposto_compra']      = isset($preco['perc_imposto_compra'])      ?  $preco['perc_imposto_compra']      : 0 ;
     $preco['perc_desconto_compra']     = isset($preco['perc_desconto_compra'])     ?  $preco['perc_desconto_compra']     : 0 ;
     $preco['perc_venda_atacado']       = isset($preco['perc_venda_atacado'])       ?  $preco['perc_venda_atacado']       : 0 ;
     $preco['perc_venda_varejo']        = isset($preco['perc_venda_varejo'])        ?  $preco['perc_venda_varejo']        : 0 ;
     $preco['perc_venda_intermediario'] = isset($preco['perc_venda_intermediario']) ?  $preco['perc_venda_intermediario'] : 0 ;
     
     $validator->set_msg('O valor de tabela é obrigatório')
     		  ->set('vlr_custo',$preco['vlr_custo'])
     		  ->is_required();
     */
     if (!(isset($empreendimentos) && is_array($empreendimentos) && count($empreendimentos) > 0)) {
         $validator->_errors['empreendimentos'][] = 'É obrigatório vincular o produto pelo menos a um empreendimento';
     }
     $new_image = false;
     if (isset($_FILES['img'])) {
         $ProdutoTO->img = NULL;
         $status_upload = false;
         $handle = new upload($_FILES['img']);
         $handle->allowed = array('image/jpeg', 'image/jpg');
         if ($handle->uploaded) {
             $handle->Process(CAMINHO_UPLOAD_IMG_PRODUTO);
             if ($handle->processed) {
                 $status_upload = true;
                 $ProdutoTO->img = $handle->file_dst_name;
                 $new_image = CAMINHO_UPLOAD_IMG_PRODUTO . $handle->file_dst_name;
             }
         }
         if (!$status_upload) {
             if ($handle->error == 'Incorrect type of file') {
                 $validator->_errors['img'][] = 'O formato da imagem deve ser jpeg ou jpg';
             } else {
                 Flight::halt(500, 'Ocorreu um erro ao fazer o upload da imagem ' . $handle->error);
             }
         }
     }
     $ProdutoTO->nme_arquivo_nutricional = NULL;
     if (isset($_FILES['arquivo-produto'])) {
         $status_upload_file = false;
         $handle = new upload($_FILES['arquivo-produto']);
         if ($handle->uploaded) {
             $handle->Process(CAMINHO_UPLOAD_FILE_PRODUTO);
             if ($handle->processed) {
                 $status_upload_file = true;
                 $ProdutoTO->nme_arquivo_nutricional = $handle->file_dst_name;
             }
         }
         if (!$status_upload_file) {
             Flight::halt(500, 'Ocorreu um erro ao fazer o upload do arquivo nutricional' . $handle->error);
         }
     }
     if (!$validator->validate()) {
         Flight::response()->status(406)->header('Content-Type', 'application/json')->write(json_encode($validator->get_errors()))->send();
         return;
     }
     if (!$ProdutoDao->updateProduto($ProdutoTO)) {
         Flight::halt(500, 'erro ao atualizar pro');
     }
     if ((int) $ProdutoTO->flg_produto_composto == 1) {
         $ProdutoDao->delInsumos($ProdutoTO->id);
         if (!$ProdutoDao->insertProdutoInsumo($ProdutoTO->id, $insumos)) {
             Flight::halt(500, 'Erro ao cadastrar o insumos');
         }
     }
     $ProdutoCategoriaDao = new ProdutoCategoriaDao();
     $ProdutoCategoriaDao->delCategorias($ProdutoTO->id);
     if (!$ProdutoCategoriaDao->insertProdutoCategorias($ProdutoTO->id, $categorias)) {
         Flight::halt(500, 'Erro ao cadastrar categorias');
     }
     foreach ($del_empreendimentos as $key => $empreendimento) {
         if (isset($empreendimento['id_produto']) && isset($empreendimento['id_empreendimento'])) {
             $ProdutoDao->deleteEmpreendimentoProduto($empreendimento['id_produto'], $empreendimento['id_empreendimento']);
         }
     }
     foreach ($empreendimentos as $key => $empreendimento) {
         if (!isset($empreendimento['id']) || empty($empreendimento['id'])) {
             $ProdutoEmpreendimentoTO = new ProdutoEmpreendimentoTO();
             $ProdutoEmpreendimentoTO->id_produto = $ProdutoTO->id;
             $ProdutoEmpreendimentoTO->id_empreendimento = $empreendimento['id_empreendimento'];
             if (!$ProdutoDao->produtoEmpreendimento($ProdutoEmpreendimentoTO)) {
                 Flight::halt(500, 'Erro ao cadastrar o id_empreendimento');
             }
         }
     }
     foreach ($precos as $preco) {
         $PrecoProdutoTO = new PrecoProdutoTO();
         $PrecoProdutoDao = new PrecoProdutoDao();
         $PrecoProdutoTO->id_produto = $ProdutoTO->id;
         $PrecoProdutoTO->id_empreendimento = $preco['id_empreendimento'];
         $PrecoProdutoTO->vlr_custo = $preco['vlr_custo'];
         $PrecoProdutoTO->perc_imposto_compra = $preco['perc_imposto_compra'];
         $PrecoProdutoTO->perc_desconto_compra = $preco['perc_desconto_compra'];
         $PrecoProdutoTO->perc_venda_atacado = $preco['perc_venda_atacado'];
         $PrecoProdutoTO->perc_venda_intermediario = $preco['perc_venda_intermediario'];
         $PrecoProdutoTO->perc_venda_varejo = $preco['perc_venda_varejo'];
         if ($preco['id_empreendimento'] == $id_empreendimento) {
             $preco_emp_current = $preco;
         }
         if (!$PrecoProdutoDao->atualizaPreco($PrecoProdutoTO)) {
             Flight::halt(500, 'erro ao atualizar preço');
         }
     }
     $ProdutoFornecedorTO = new ProdutoFornecedorTO();
     $ProdutoDao->delAllFornecedor($ProdutoTO->id);
     foreach ($fornecedores as $key => $value) {
         $ProdutoFornecedorTO->id_produto = $ProdutoTO->id;
         $ProdutoFornecedorTO->id_fornecedor = $value['id_fornecedor'];
         if (!$ProdutoDao->fornecedorProduto($ProdutoFornecedorTO)) {
             Flight::halt(500, 'Erro ao cadastrar o produto');
         }
     }
     $InventarioController = new InventarioController();
     $inventario = isset($_POST['inventario']) ? $_POST['inventario'] : array();
     if (is_array($inventario) && count($inventario) > 0) {
         $InventarioController->salveInventarioSimples($inventario, $id_empreendimento);
     }
     $valor_campo_extra = isset($_POST['valor_campo_extra']) ? $_POST['valor_campo_extra'] : array();
     if (is_array($valor_campo_extra) && count($valor_campo_extra) > 0) {
         $CampoExtraProdutoDao = new CampoExtraProdutoDao();
         $CampoExtraProdutoDao->save($id_empreendimento, $_POST['id'], $valor_campo_extra);
     }
     $ProdutoCombinacaoDao = new ProdutoCombinacaoDao();
     $produtos_combinacoes = isset($_POST['combinacoes']) && is_array($_POST['combinacoes']) ? $_POST['combinacoes'] : array();
     $combinacoes = array();
     foreach ($produtos_combinacoes as $produto_combinacao) {
         if (!isset($produto_combinacao['id_produto']) || $produto_combinacao['id_produto'] != $produto_combinacao['id_combinacao']) {
             if (!isset($produto_combinacao['id_produto_combinacao'])) {
                 $r = $ProdutoCombinacaoDao->saveProdutoCombinacao($_POST['id'], $produto_combinacao, $_POST['id_empreendimento']);
                 $combinacoes[] = $r;
             } else {
                 $r = $ProdutoCombinacaoDao->updateProdutoCombinacao($_POST['id'], $produto_combinacao, $_POST['id_empreendimento']);
                 $combinacoes[] = $r;
             }
         } else {
             $combinacoes[] = $produto_combinacao;
         }
     }
     $ProdutoCombinacaoDao->saveCombinacoes($combinacoes, $_POST['id']);
     $saida = array('id' => (int) $ProdutoTO->id);
     if ($new_image) {
         $saida['local_new_image'] = $new_image;
     }
     Flight::response()->status(200)->header('Content-Type', 'application/json')->write(json_encode($saida))->send();
 }
Esempio n. 2
0
 protected function GenerateResponse()
 {
     try {
         $this->response = InventarioController::ExistenciasRecalcular(isset($_POST['productos']) ? json_decode($_POST['productos']) : null, isset($_POST['id_sucursal']) ? $_POST['id_sucursal'] : "");
     } catch (Exception $e) {
         //Logger::error($e);
         throw new ApiException($this->error_dispatcher->invalidDatabaseOperation($e->getMessage()));
     }
 }
Esempio n. 3
0
 /**
  *
  * Buscar productos por codigo_producto, nombre_producto, descripcion_producto.
  *
  * @param query string Buscar productos por codigo_producto, nombre_producto, descripcion_producto.
  * @param id_producto int Si estoy buscando un producto del cual ya tengo conocido su id. Si se envia `id_producto` todos los demas campos seran ignorados.
  * @param id_sucursal int Buscar las existencias de este producto en una sucursal especifica.
  * @return resultados json
  * @return numero_de_resultados int
  **/
 public static function Buscar($query, $id_producto = null, $id_sucursal = null)
 {
     if (!is_null($id_producto)) {
         Logger::log("Buscando producto por id_producto = {$id_producto}.... ");
         $p = ProductoDAO::getByPK($id_producto);
         if (is_null($p)) {
             return array("resultados" => array(), "numero_de_resultados" => 0);
         }
         return array("resultados" => array($p->asArray()), "numero_de_resultados" => 1);
     }
     //!is_null($id_producto)
     if (!is_null($id_sucursal)) {
         Logger::log("Buscando producto por id_sucursal = {$id_sucursal}.... ");
         $empresas = SucursalEmpresaDAO::search(new SucursalEmpresa(array("id_sucursal" => $id_sucursal)));
         if (empty($empresas)) {
             Logger::log("no results");
             return array("resultados" => array(), "numero_de_resultados" => 0);
         }
         $results = array();
         foreach ($empresas as $e) {
             Logger::log("suc {$id_sucursal} pertenece a empresa:" . $e->getIdEmpresa());
             $productos_e = ProductoEmpresaDAO::search(new ProductoEmpresa(array("id_empresa" => $e->getIdEmpresa())));
             foreach ($productos_e as $p_e) {
                 $p = ProductoDAO::getByPK($p_e->getIdProducto());
                 if (is_null($p)) {
                     throw new BusinessLogicException("el producto " . $p_e->getIdProducto() . " no existe");
                 }
                 array_push($results, $p->asArray());
             }
         }
         if (sizeof($results) == 0) {
             array_push($results, array("nombre_producto" => "lksadjfklaj", "descripcion" => "asdf"));
         }
         return array("numero_de_resultados" => sizeof($results), "resultados" => $results);
     }
     //if (!is_null($id_sucursal))
     $productos = ProductoDAO::buscarProductos($query);
     $resultado = array();
     foreach ($productos as $p) {
         $r = $p->asArray();
         //una vez que tengo los productos vamos a agergarle sus
         //precios tarifarios
         $r["tarifas"] = TarifasController::_CalcularTarifa($p, "venta");
         //buscar sus existencias
         $existencias = InventarioController::Existencias(null, null, $p->getIdProducto(), null);
         $r["existencias"] = $existencias["resultados"];
         array_push($resultado, $r);
     }
     //$productos as $p
     if (strlen($query) > 0 && sizeof($resultado) == 0) {
         array_push($resultado, array("nombre_producto" => "El producto <i>{$query}</i> no se encuentra.", "descripcion" => "&iquest; Desea agregarlo ahora ?", "id_producto" => -99, "query" => $query));
     }
     return array("resultados" => $resultado, "numero_de_resultados" => sizeof($resultado));
 }