public static function saveProduto() { $dados = $_POST; $validator = new DataValidator(); $validator->set_msg('O campo código de barra deve ter obrigatóriamente no máximo 13 caracteres ')->set('senha', empty(getKeyArr($dados, 'codigo_barra')) ? 0 : getKeyArr($dados, 'codigo_barra'))->max_length(13, true); if (!$validator->validate()) { Flight::response()->status(406)->header('Content-Type', 'application/json')->write(json_encode($validator->get_errors()))->send(); return; } $ReferenciaIntegracaoDao = new ReferenciaIntegracaoDao(); $ReferenciaIntegracaoTO = new ReferenciaIntegracaoTO(); $PrestaShopDao = new PrestaShopDao($dados['id_empreendimento']); $ProdutoCombinacaoDao = new ProdutoCombinacaoDao(); $ReferenciaIntegracaoTO->sistema_integrado = 'PrestaShop'; $ReferenciaIntegracaoTO->tabela = 'tbl_produtos'; $ReferenciaIntegracaoTO->id_item = $dados['id']; $ReferenciaIntegracaoTO->id_item_referencia = NULL; $ReferenciaIntegracaoTO->tipo = 'produto'; $ReferenciaIntegracaoTO->id_empreendimento = $dados['id_empreendimento']; $referencia = $ReferenciaIntegracaoDao->refExists($ReferenciaIntegracaoTO); if (!$referencia) { $comb = $ProdutoCombinacaoDao->get(null, null, array('tpc.id_combinacao' => $dados['id'])); if ($comb && $comb[0]['id_produto'] != $comb[0]['id_combinacao']) { $combinacao = $comb[0]; $refCombinacao = new ReferenciaIntegracaoTO(); $refCombinacao->sistema_integrado = 'PrestaShop'; $refCombinacao->tabela = 'tbl_produto_combinacao'; $refCombinacao->id_item = $combinacao['id_produto_combinacao']; $refCombinacao->tipo = 'combinacao'; $refCombinacao->id_empreendimento = $dados['id_empreendimento']; $referenciaCombination = $ReferenciaIntegracaoDao->refExists($refCombinacao); $itemAux = array(); $refTamanho = $ReferenciaIntegracaoDao->get(array('sistema_integrado' => 'PrestaShop', 'tabela' => 'tbl_tamanho', 'id_item' => $combinacao['id_tamanho'], 'tipo' => 'tamanho', 'id_empreendimento' => $dados['id_empreendimento'], 'flg_excluido' => 0)); if ($refTamanho) { $itemAux[] = $refTamanho['id_item_referencia']; } $refCor = $ReferenciaIntegracaoDao->get(array('sistema_integrado' => 'PrestaShop', 'tabela' => 'tbl_cor_produto', 'id_item' => $combinacao['id_cor'], 'tipo' => 'cor', 'id_empreendimento' => $dados['id_empreendimento'], 'flg_excluido' => 0)); if ($refCor) { $itemAux[] = $refCor['id_item_referencia']; } $refCombinacao = new ReferenciaIntegracaoTO(); $refCombinacao->sistema_integrado = 'PrestaShop'; $refCombinacao->tabela = 'tbl_produtos'; $refCombinacao->id_item = $combinacao['id_produto']; $refCombinacao->tipo = 'produto'; $refCombinacao->id_empreendimento = $dados['id_empreendimento']; $refProdutoPrincipal = $ReferenciaIntegracaoDao->refExists($refCombinacao); if (!$refProdutoPrincipal) { Flight::halt(500, 'Referencia do produto principal da combinação não foi encontrado'); } $sendCombination = new StdClass(); $sendCombination->id_product = $refProdutoPrincipal['id_item_referencia']; $sendCombination->minimal_quantity = 0; $sendCombination->product_option_values = $itemAux; if (!$referenciaCombination) { $aux = $PrestaShopDao->newCombination($sendCombination); $refCombinacao->id_item_referencia = $aux['combination']->id; $ReferenciaIntegracaoDao->save($refCombinacao); $PrestaShopDao->atualizaEstoquePrestaShop($dados['id_empreendimento'], $dados['id'], $refProdutoPrincipal['id_item_referencia'], $aux['combination']->id); echo json_encode($aux); return; } else { $PrestaShopDao->atualizaEstoquePrestaShop($dados['id_empreendimento'], $dados['id'], $refProdutoPrincipal['id_item_referencia'], $referenciaCombination['id_item_referencia']); $sendCombination->id = $referenciaCombination['id_item_referencia']; $aux = $PrestaShopDao->editCombination($sendCombination); echo json_encode($aux); return; } } } if (isset($dados['precos']) && is_array($dados['precos'])) { $preco_emp_current = getArrayINarray('id_empreendimento', $dados['id_empreendimento'], $dados['precos']); } $ConfiguracaoDao = new ConfiguracaoDao(); $config = $ConfiguracaoDao->getConfiguracoes($dados['id_empreendimento']); $product = new StdClass(); $product->name = $dados['nome']; $product->price = isset($preco_emp_current['valor_venda_varejo']) ? round($preco_emp_current['valor_venda_varejo'], 2) : 0; $product->wholesale_price = isset($preco_emp_current['vlr_custo']) ? $preco_emp_current['vlr_custo'] : 0; $product->description = getKeyArr($dados, 'descricao'); $product->active = 1; $product->id_supplier = 0; $product->description_short = getKeyArr($dados, 'descricao_curta'); $product->meta_description = getKeyArr($dados, 'meta_description'); $product->meta_title = getKeyArr($dados, 'meta_title'); $product->id_empreendimento = $dados['id_empreendimento']; $product->categories = isset($dados['categorias']) && is_array($dados['categorias']) ? $dados['categorias'] : array(); $product->available_for_order = 1; $product->show_price = 1; $product->ean13 = getKeyArr($dados, 'codigo_barra'); $product->reference = $dados['id']; if (isset($dados['id_fabricante']) && is_numeric($dados['id_fabricante'])) { $refFab = $ReferenciaIntegracaoDao->get(array('sistema_integrado' => 'PrestaShop', 'tabela' => 'tbl_fabricante', 'id_item' => $dados['id_fabricante'], 'tipo' => 'fabricante', 'id_empreendimento' => $dados['id_empreendimento'], 'flg_excluido' => 0)); if ($refFab) { $product->id_manufacturer = $refFab['id_item_referencia']; } } $fornecedores = array(); $id_supplier = 0; if (isset($dados['fornecedores']) && is_array($dados['fornecedores']) && count($dados['fornecedores']) > 0) { foreach ($dados['fornecedores'] as $key => $fornecedor) { $referenciaForcedor = $ReferenciaIntegracaoDao->get(array('sistema_integrado' => 'PrestaShop', 'tabela' => 'tbl_fornecedores', 'id_item' => $fornecedor['id_fornecedor'], 'tipo' => 'fornecedor', 'id_empreendimento' => $dados['id_empreendimento'], 'flg_excluido' => 0)); if ($referenciaForcedor) { $fornecedores[] = $referenciaForcedor['id_item_referencia']; $product->id_supplier = $product->id_supplier == 0 ? $referenciaForcedor['id_item_referencia'] : $product->id_supplier; } } } if (count($product->categories) > 0) { $referenciaCategoria = $ReferenciaIntegracaoDao->get(array('sistema_integrado' => 'PrestaShop', 'tabela' => 'tbl_categorias', 'id_item' => $dados['id_categoria'], 'tipo' => 'categoria', 'id_empreendimento' => $dados['id_empreendimento'], 'flg_excluido' => 0)); if (!$referenciaCategoria) { Flight::halt(500, 'A Referencia para a categoria não foi encontrada'); } $product->id_category_default = $referenciaCategoria['id_item_referencia']; } else { $product->categories = array($config['prestashop_id_categoria_inicio']); $product->id_category_default = $config['prestashop_id_categoria_inicio']; $product->category = $config['prestashop_id_categoria_inicio']; } if ($referencia) { $combinacoes = $ProdutoCombinacaoDao->get(null, null, array('tpc.id_produto' => $dados['id'])); $combinacoes = $combinacoes ? $combinacoes : array(); $id_combinacoes_prestashop = array(); foreach ($combinacoes as $combinacao) { $refCombinacao = new ReferenciaIntegracaoTO(); $refCombinacao->sistema_integrado = 'PrestaShop'; $refCombinacao->tabela = 'tbl_produto_combinacao'; $refCombinacao->id_item = $combinacao['id_produto_combinacao']; $refCombinacao->tipo = 'combinacao'; $refCombinacao->id_empreendimento = $dados['id_empreendimento']; $referenciaCombination = $ReferenciaIntegracaoDao->refExists($refCombinacao); $itemAux = array(); $refTamanho = $ReferenciaIntegracaoDao->get(array('sistema_integrado' => 'PrestaShop', 'tabela' => 'tbl_tamanho', 'id_item' => $combinacao['id_tamanho'], 'tipo' => 'tamanho', 'id_empreendimento' => $dados['id_empreendimento'], 'flg_excluido' => 0)); if ($refTamanho) { $itemAux[] = $refTamanho['id_item_referencia']; } $refCor = $ReferenciaIntegracaoDao->get(array('sistema_integrado' => 'PrestaShop', 'tabela' => 'tbl_cor_produto', 'id_item' => $combinacao['id_cor'], 'tipo' => 'cor', 'id_empreendimento' => $dados['id_empreendimento'], 'flg_excluido' => 0)); if ($refCor) { $itemAux[] = $refCor['id_item_referencia']; } $sendCombination = new StdClass(); $sendCombination->id_product = $referencia['id_item_referencia']; $sendCombination->minimal_quantity = 0; $sendCombination->product_option_values = $itemAux; if (!$referenciaCombination) { $aux = $PrestaShopDao->newCombination($sendCombination); $refCombinacao->id_item_referencia = $aux['combination']->id; $id_combinacoes_prestashop[] = $aux['combination']->id; $PrestaShopDao->atualizaEstoquePrestaShop($dados['id_empreendimento'], $combinacao['id_combinacao'], $referencia['id_item_referencia'], $aux['combination']->id); if ($combinacao['id_produto'] == $combinacao['id_combinacao']) { $id_default_combination = $aux['combination']->id; } $ReferenciaIntegracaoDao->save($refCombinacao); } else { $id_combinacoes_prestashop[] = $referenciaCombination['id_item_referencia']; $sendCombination->id = $referenciaCombination['id_item_referencia']; $aux = $PrestaShopDao->editCombination($sendCombination); $PrestaShopDao->atualizaEstoquePrestaShop($dados['id_empreendimento'], $combinacao['id_combinacao'], $referencia['id_item_referencia'], $referenciaCombination['id_item_referencia']); if ($combinacao['id_produto'] == $combinacao['id_combinacao']) { $id_default_combination = $aux['combination']->id; } } } if (count($combinacoes) == 0) { $PrestaShopDao->atualizaEstoquePrestaShop($dados['id_empreendimento'], $dados['id'], $referencia['id_item_referencia'], 0); } $PrestaShopDao->deleteCombination($id_combinacoes_prestashop, $referencia['id_item_referencia']); $ReferenciaIntegracaoTO->id_item_referencia = $referencia['id_item_referencia']; $product->id = $ReferenciaIntegracaoTO->id_item_referencia; $set_cover = false; if (isset($dados['local_new_image']) && !empty($dados['local_new_image'])) { $busca = new StdClass(); $busca->sistema_integrado = 'PrestaShop'; $busca->tabela = 'tbl_produtos'; $busca->id_item = $dados['id']; $busca->tipo = 'imagem'; $busca->id_empreendimento = $dados['id_empreendimento']; $referenciaImg = $ReferenciaIntegracaoDao->refExists($busca); if ($referenciaImg) { $busca->id_item_referencia = $referenciaImg['id_item_referencia']; $PrestaShopDao->delteImageProduto($ReferenciaIntegracaoTO->id_item_referencia, $busca->id_item_referencia); } if (is_file($dados['local_new_image'])) { $obj_img = $PrestaShopDao->newImage($dados['local_new_image'], $ReferenciaIntegracaoTO->id_item_referencia); if ($obj_img) { $set_cover = true; $busca->id_item_referencia = $obj_img->id; if ($referenciaImg) { $ReferenciaIntegracaoDao->updateRef($busca, 'id=' . $referenciaImg['id']); } else { $ReferenciaIntegracaoDao->save($busca); } } } } if (isset($id_default_combination)) { $product->id_default_combination = $id_default_combination; } $result = $resultPrestaShop = $PrestaShopDao->editProducts($product); self::saveProdutoFornecedores($dados['id_empreendimento'], $fornecedores, $referencia['id_item_referencia']); if ($set_cover) { $PrestaShopDao->setImageCoverProduct($ReferenciaIntegracaoTO->id_item_referencia, $obj_img->id); } echo json_encode($result); } else { $resultPrestaShop = $PrestaShopDao->newProducts($product); $ReferenciaIntegracaoTO->id_item_referencia = $resultPrestaShop['produto']->id; $ReferenciaIntegracaoDao->save($ReferenciaIntegracaoTO); self::saveProdutoFornecedores($dados['id_empreendimento'], $fornecedores, $resultPrestaShop['produto']->id); $combinacoes = $ProdutoCombinacaoDao->get(null, null, array('tpc.id_produto' => $dados['id'])); $combinacoes = $combinacoes ? $combinacoes : array(); $id_combinacoes_prestashop = array(); foreach ($combinacoes as $combinacao) { $itemAux = array(); $refTamanho = $ReferenciaIntegracaoDao->get(array('sistema_integrado' => 'PrestaShop', 'tabela' => 'tbl_tamanho', 'id_item' => $combinacao['id_tamanho'], 'tipo' => 'tamanho', 'id_empreendimento' => $dados['id_empreendimento'], 'flg_excluido' => 0)); if ($refTamanho) { $itemAux[] = $refTamanho['id_item_referencia']; } $refCor = $ReferenciaIntegracaoDao->get(array('sistema_integrado' => 'PrestaShop', 'tabela' => 'tbl_cor_produto', 'id_item' => $combinacao['id_cor'], 'tipo' => 'cor', 'id_empreendimento' => $dados['id_empreendimento'], 'flg_excluido' => 0)); if ($refCor) { $itemAux[] = $refCor['id_item_referencia']; } $sendCombination = new StdClass(); $sendCombination->id_product = $resultPrestaShop['produto']->id; $sendCombination->minimal_quantity = 0; $sendCombination->product_option_values = $itemAux; $aux = $PrestaShopDao->newCombination($sendCombination); $id_combinacoes_prestashop[] = $aux['combination']->id; $PrestaShopDao->atualizaEstoquePrestaShop($dados['id_empreendimento'], $combinacao['id_combinacao'], $aux['combination']->id, $aux['combination']->id); if ($combinacao['id_produto'] == $combinacao['id_combinacao']) { $PrestaShopDao->defaultProductAttribute($resultPrestaShop['produto']->id, $aux['combination']->id); } $refCombinacao = new ReferenciaIntegracaoTO(); $refCombinacao->sistema_integrado = 'PrestaShop'; $refCombinacao->tabela = 'tbl_produto_combinacao'; $refCombinacao->id_item = $combinacao['id_produto_combinacao']; $refCombinacao->id_item_referencia = $aux['combination']->id; $refCombinacao->tipo = 'combinacao'; $refCombinacao->id_empreendimento = $dados['id_empreendimento']; $ReferenciaIntegracaoDao->save($refCombinacao); } if (count($combinacoes) == 0) { $PrestaShopDao->atualizaEstoquePrestaShop($dados['id_empreendimento'], $dados['id'], $resultPrestaShop['produto']->id, 0); } if (isset($dados['local_new_image']) && !empty($dados['local_new_image']) && is_file($dados['local_new_image'])) { $obj_img = $PrestaShopDao->newImage($dados['local_new_image'], $ReferenciaIntegracaoTO->id_item_referencia); if ($obj_img) { $set_cover = false; $PrestaShopDao->setImageCoverProduct($ReferenciaIntegracaoTO->id_item_referencia, $obj_img->id); $busca = new StdClass(); $busca->sistema_integrado = 'PrestaShop'; $busca->tabela = 'tbl_produtos'; $busca->id_item = $dados['id']; $busca->id_item_referencia = $obj_img->id; $busca->tipo = 'imagem'; $busca->id_empreendimento = $dados['id_empreendimento']; $ReferenciaIntegracaoDao->save($busca); } } echo json_encode($resultPrestaShop); } }
public function requestsaveProdutoFornecedores($id_item, $id_item_referencia, $id_empreendimento, $arr) { $FornecedorDao = new FornecedorDao(); $ProdutoDao = new ProdutoDao(); $ProdutoFornecedorDao = new ProdutoFornecedorDao(); $ReferenciaIntegracaoDao = new ReferenciaIntegracaoDao(); $fornecedores = $FornecedorDao->getFornecedoresByProduto(array('prd.id' => $id_item)); $fornecedores = $fornecedores ? $fornecedores : array(); $ids = array(); $arr = is_array($arr) ? $arr : array(); foreach ($arr as $key => $value) { $ReferenciaIntegracaoTO = new ReferenciaIntegracaoTO(); $ReferenciaIntegracaoTO->sistema_integrado = 'PrestaShop'; $ReferenciaIntegracaoTO->tabela = 'tbl_fornecedores'; $ReferenciaIntegracaoTO->id_item_referencia = $value; $ReferenciaIntegracaoTO->tipo = 'fornecedor'; $ReferenciaIntegracaoTO->id_empreendimento = $id_empreendimento; $referencia = $ReferenciaIntegracaoDao->refExists($ReferenciaIntegracaoTO, true); if ($referencia) { $ids[] = $referencia['id_item']; $find = getArrayINarray('id_fornecedor', $referencia['id_item'], $fornecedores); if ($find == false) { $ProdutoFornecedorTO = new ProdutoFornecedorTO(); $ProdutoFornecedorTO->id_produto = $id_item; $ProdutoFornecedorTO->id_fornecedor = $referencia['id_item']; if (!$ProdutoDao->fornecedorProduto($ProdutoFornecedorTO)) { throw new Exception('erro ao vincular fornecedoor ao enpreendimento ', 1); } } } } foreach ($fornecedores as $value) { if (!in_array($value['id_fornecedor'], $ids)) { $ProdutoFornecedorDao->deleteItem('id=' . $value['id_produto_fornecedor']); } } }