function sp_addProductToCatalog($jng_sp_id, $product_id)
{
    use_class('Product');
    use_class('jng_sp');
    use_class('products_minierp');
    use_class('jng_sp_catalog');
    use_class('jng_sp_catalog_params');
    $class_sp = new jng_sp();
    $class_pm = new products_minierp();
    $class_jc = new jng_sp_catalog();
    $class_jcp = new jng_sp_catalog_params();
    $sp_detail = $class_sp->retrieveDetail($jng_sp_id);
    $sp_used_selling_points = getSalesPartnerUseSellingPoint();
    $sp_used_selling_points_amde = getSalesPartnerUseSellingPoint(true);
    if (!is_array($product_id)) {
        $product_id = explode(',', $product_id);
    }
    $new_id = array();
    foreach ($product_id as $pid) {
        $check_exist = $class_jc->retrieveDetail(null, $jng_sp_id, $pid);
        if ($check_exist === false) {
            $obj_product = new Product($pid);
            $product_data_raw = $class_pm->retrieveDetail($pid);
            $products_selling_points = '';
            $psp = $product_data_raw['pd'][2]['products_selling_points'];
            $pspa = $product_data_raw['pd'][2]['products_selling_points_amde'];
            if (in_array($jng_sp_id, $sp_used_selling_points)) {
                $products_selling_points = $psp;
            } elseif (in_array($jng_sp_id, $sp_used_selling_points_amde)) {
                $products_selling_points = $pspa;
            }
            if (!is_null($obj_product->id)) {
                $desc = $product_data_raw['pd'][$sp_detail['languages_id']];
                $product = array();
                $product['products_length'] = $product_data_raw['pnc']['products_length'];
                $product['products_name'] = $desc['products_name'];
                $product['products_description'] = $desc['products_description'];
                $product['products_head_keywords_tag'] = $desc['products_head_keywords_tag'];
                $article_number = str_replace('-', '_', $obj_product->code);
                $price_uvp = $obj_product->getPriceUVP();
                $price_default = $obj_product->getPriceDefault();
                //TODO: USE B2B FLAG
                if ($jng_sp_id == '5') {
                    $product_price = $obj_product->getPriceSellingDefaultB2B($price_uvp, $jng_sp_id);
                    $product_price_old = 0;
                    $product_price_new = 0;
                    $active_status = '1';
                } else {
                    $product_price = $price_default;
                    $product_price_old = $price_uvp > $price_default ? $price_uvp : 0;
                    $product_price_new = 0;
                    $active_status = '0';
                }
                $product_name = $product['products_name'];
                $product_desc = $product['products_description'];
                $keywords_ok = array();
                $keywords_temp = str_replace('|||', ',', $product['products_head_keywords_tag']);
                $keywords_split = explode(',', $keywords_temp);
                foreach ($keywords_split as $kws) {
                    $kws = trim($kws);
                    if ($kws != '') {
                        $rule1 = strpos($product_name, $kws) === false;
                        $rule2 = strpos($product_desc, $kws) === false;
                        $rule3 = strpos($kws, 'cm') === false;
                        if ($rule1 && $rule2 && $rule3) {
                            $keywords_ok[] = $kws;
                        }
                    }
                }
                $product_keywords = count($keywords_ok) > 0 ? implode(', ', $keywords_ok) : '';
                $product_length = $product['products_length'] == '' ? '0' : $product['products_length'];
                //Retrieve Products Color and connect it with SP Colors
                $color_pattern_id = $class_pm->loadColorPattern($obj_product->id);
                $sp_params_raw = $class_jcp->load($jng_sp_id, 'C');
                $sp_params = array();
                foreach ($sp_params_raw as $spr) {
                    if (in_array($spr['param_id'], $color_pattern_id)) {
                        $sp_params[] = $spr['param_value'];
                    }
                }
                $product_color = implode(', ', $sp_params);
                //Retrieve Products Materials and connect it with SP Materials
                $products_materials_id = $class_pm->loadProductMaterials($obj_product->id);
                $sp_params_raw = $class_jcp->load($jng_sp_id, 'M');
                $sp_params = array();
                foreach ($sp_params_raw as $spr) {
                    if (in_array($spr['param_id'], $products_materials_id)) {
                        $sp_params[] = $spr['param_value'];
                    }
                }
                $product_material = implode(', ', $sp_params);
                $date_added = date('Y-m-d H:i:s');
                //Retrieve Max Resourcing Days
                $elmax_rd_query = "SELECT pe.products_id, MAX(es.resourcing_day) AS max_res_day";
                $elmax_rd_query .= " FROM products_use_elements pe";
                $elmax_rd_query .= " LEFT JOIN elements_stock es ON es.elements_id=pe.elements_id";
                $elmax_rd_query .= " WHERE pe.products_id = {$obj_product->id}";
                $elmax_rd_query .= " GROUP BY pe.products_id";
                $elmax_rd_result = tep_db_query($elmax_rd_query);
                $elmax_rd = tep_db_fetch_array($elmax_rd_result);
                $resplacement_days = $elmax_rd['max_res_day'] == '' ? '0' : $elmax_rd['max_res_day'];
                //INSERT DATA
                $sda = array('jng_sp_id' => $jng_sp_id, 'products_id' => $obj_product->id, 'article_number' => $article_number, 'price' => $product_price, 'price_old' => $product_price_old, 'price_new' => $product_price_new, 'name' => $product_name, 'description' => $product_desc, 'keywords' => $product_keywords, 'length' => $product_length, 'color' => $product_color, 'material' => $product_material, 'use_logo' => '1', 'status_image' => '0', 'date_added' => $date_added, 'replacement_days' => $resplacement_days, 'products_selling_points' => $products_selling_points, 'active_status' => $active_status);
                tep_db_perform('jng_sp_catalog', $sda);
                $new_id[] = tep_db_insert_id();
            }
        }
    }
    return $new_id;
}
<?php

#########################################
#  Author  : D3W4 & SAHAT               #
#  Created : Dec 20, 2010 10:16:50 AM   #
#########################################
global $db;
require_once '../confy.php';
require_once '../functions.php';
require_once '../functions-2.php';
tep_db_connect();
use_class('products_minierp');
use_class('jng_sp_catalog_params');
$class_pm = new products_minierp();
$class_cp = new jng_sp_catalog_params();
$dbq = tep_db_query("SELECT pue.*, e.`attribute_material_id` FROM products_use_elements pue\nINNER JOIN element e ON e.elements_id = pue.elements_id\nWHERE pue.products_id\nIN (27264,27265,27266,27267,27268,27269,27270,46593,46594,46595,46599,46600,46601,46606,46766,46767,46768,46769,46770,46772,46776,46777,46781,46782,46833,46834,46835,46836,46837,46838,46839,46840,46841,46842,49263,50959,50960,50961,50962,50963,50964,53649,53650,53651,53805,53806,53807,54412,54655,54656,54657,54658,54659,54660,54661,54662,54663,54664,54665,54666,54667,54668,57086,57087,57088,57089,57090,57091,57114,57115,57116,57117,57118,57119,57170,57171,57172,57173,57174,57175,57176,57177,57178,57179,58701,58702,58703,58796,58798,58800,58801,59048,59049,59050,59051,59052,59075,59076,59144,59145,59146,59147,59460,60012,60035,60269,60517,60518,60519,60597,60598,60606,60607,60608,60609,60610,60611,60612,60639,60770,61803,62421,62422,62423,63699,65081,66369,66370,66371,66716,66717,66718,68442,69431,69473,69474,69638,69639,69789,70029,70029,70030,70030,70285,70640,70874,70874,70875,70875,72192,72193,73345,73925,73929,73949,74020,74025,74031,74065,74072,74073,74074)\nORDER BY products_id");
$products = array();
$goldplated = array();
$d = array();
$old_pid = '';
while ($r = tep_db_fetch_array($dbq)) {
    if ($r['finishing_goldplate'] == '1' && !in_array($r['products_id'], $goldplated)) {
        $goldplated[] = $r['products_id'];
    }
    if (!isset($products[$r['products_id']])) {
        $products[$r['products_id']] = array();
    }
    if (!is_null($r['attribute_material_id']) && !in_array($r['attribute_material_id'], $products[$r['products_id']])) {
        $products[$r['products_id']][] = $r['attribute_material_id'];
    }
}
<?php

global $db;
require_once '../confy.php';
require_once '../functions.php';
require_once '../functions-2.php';
tep_db_connect();
$jng_sp_id = '1';
use_class('jng_sp_catalog_params');
$class_jcp = new jng_sp_catalog_params();
use_class('products_minierp');
$class_pm = new products_minierp();
$colors_raw = $class_jcp->load($jng_sp_id, 'C');
$colors = array();
foreach ($colors_raw as $cr) {
    $colors[$cr['param_value']] = $cr['param_id'];
}
$materials_raw = $class_jcp->load($jng_sp_id, 'M');
$materials = array();
foreach ($materials_raw as $mr) {
    $materials[$mr['param_id']] = $mr['param_value'];
}
$q = "SELECT products_id, color, material FROM jng_sp_catalog WHERE jng_sp_id={$jng_sp_id}";
$r = tep_db_query($q);
while ($row = tep_db_fetch_array($r)) {
    $products_id = $row['products_id'];
    $ca = explode(',', $row['color']);
    foreach ($ca as $key => $c) {
        $ca[$key] = trim($c);
    }
    $color_pattern_id = array();
function saveColors($products_id, $colors)
{
    global $class_pm, $class_jc;
    $color_pattern_id = explode(',', $colors);
    $class_pm->setColorPattern($products_id, $color_pattern_id);
    use_class('jng_sp_catalog_params');
    $class_jcp = new jng_sp_catalog_params();
    $q = tep_db_query("SELECT jng_sp_catalog_id, jng_sp_id FROM jng_sp_catalog WHERE products_id={$products_id}");
    $sp_list = array();
    while ($row = tep_db_fetch_array($q)) {
        $sp_list[$row['jng_sp_catalog_id']] = $row['jng_sp_id'];
    }
    foreach ($sp_list as $catalog_id => $jng_sp_id) {
        $sp_params_raw = $class_jcp->load($jng_sp_id, 'C');
        $sp_params = array();
        foreach ($sp_params_raw as $spr) {
            if (in_array($spr['param_id'], $color_pattern_id)) {
                $sp_params[] = $spr['param_value'];
            }
        }
        $sda = array('color' => implode(', ', $sp_params));
        $class_jc->updateField($catalog_id, $sda);
    }
}
<?php

use_class('CategoryTop');
use_class('Product');
use_class('ProductAttribute');
use_class('jng_sp');
use_class('jng_sp_catalog_params');
use_class('products_brand');
$class_sp = new jng_sp();
$class_jpc = new jng_sp_catalog_params();
$class_pb = new products_brand();
//SP SETTING
salesPartnerCombo();
//AJAX ACTOIN
if (isset($_GET['tab'])) {
    $param_code = tep_db_prepare_input($_GET['tab']);
    $result = '';
    if ($param_code == 'BL') {
        $brands = $class_pb->retrieveList();
        $result .= '<div><table class="form" border="0" cellpadding="0" cellspacing="0">';
        foreach ($brands as $b) {
            $param_id = $b['products_brand_id'];
            $param_name = $b['brand_name'];
            $sp_brands = $class_pb->getSPbrands($param_id);
            $param_value = $sp_brands[$jng_sp_id];
            $checked = $param_value != '' ? 'checked="checked"' : '';
            $result .= '<tr>';
            $result .= '<td width="20"><input type="checkbox" id="param_id_' . $param_code . $param_id . '" class="param_id" value="' . $param_id . '" ' . $checked . ' /></td>';
            $result .= '<td width="150"><label for="param_id_' . $param_code . $param_id . '">' . $param_name . '</label></td>';
            $result .= '<td><input type="text" id="param_value_' . $param_id . '" class="input param_value" value="' . $param_value . '" /></td>';
            $result .= '<td id="param_status_' . $param_code . $param_id . '"></td>';
 function refreshProductDataSupport($data)
 {
     //MUST UPDATES AFTER ADD-UPDATE-DELETE ELEMENTS
     $pid = $data['pid'];
     use_class('jng_sp_catalog_params');
     $class_jcp = new jng_sp_catalog_params();
     $class_jcp->setParams($pid, 'M');
     $this->calculateMaterialExpenses($pid);
     if ($data['contain_stones']) {
         $this->calculateStoneTotal($pid);
     }
     $this->updateComplexity($pid);
     $this->setSellingPointToProducts($pid);
     use_class('products_family');
     $family = new products_family();
     $family->refreshFamilyMatchKey($pid);
 }
use_class('archive', DIR_WS_CLASSES);
use_class('jng_sp');
use_class('jng_sp_catalog');
use_class('jng_sp_catalog_params');
use_class('jng_sp_upload');
use_class('products_minierp');
use_class('products_articles');
use_class('products_linking');
use_class('products_brand');
use_class('styles');
use_class('products_materials');
use_class('Category');
use_class('SalesPartner');
$class_sp = new jng_sp();
$class_jc = new jng_sp_catalog();
$class_jcp = new jng_sp_catalog_params();
$class_ju = new jng_sp_upload();
$class_pl = new products_linking();
$class_s = new styles();
$class_pb = new products_brand();
$class_pa = new products_articles();
$class_pmat = new products_materials();
$class_pm = new products_minierp();
//load brands
$brandlist = $class_pb->retrieveList();
//SP SETTING
salesPartnerCombo();
$create_image_zip = true;
/* Moved to confy (used also on sp-catalog-updater) and changed to LAZADA_ZALORA_DEFAULT_SALE_END_DATE
define('DEFAULT_SALE_END_DATE', '2016-10-01');
 */
<?php

/**
 * Description of productdetaildescription1
 *
 * @author IT TEAM BONOFACTUM
 * @created May 29, 2013 5:11:09 PM
 */
use_class('products_minierp');
use_class('products_materials');
use_class('jng_sp_catalog');
use_class('jng_sp_catalog_params');
$class_pm = new products_minierp();
$class_pmat = new products_materials();
$class_jc = new jng_sp_catalog();
$class_jcp = new jng_sp_catalog_params();
use_service('color_pattern');
$class_cp = new color_pattern();
$products_id = tep_db_prepare_input($_GET['id']);
$topic = $class_pm->getTopicList();
//POST ACTION
if (isset($_POST['me_action']) && $_POST['me_action'] != '') {
    if ($_POST['me_action'] == "SAVENAME") {
        $languages_id = tep_db_prepare_input($_POST['languages_id']);
        $name = tep_db_prepare_input($_POST['name']);
        $description = tep_db_prepare_input($_POST['description']);
        $keywords = tep_db_prepare_input($_POST['keywords']);
        $sellingpoints = tep_db_prepare_input($_POST['sellingpoints']);
        $sellingpointsamde = tep_db_prepare_input($_POST['sellingpointsamde']);
        $sellingpointslaid = tep_db_prepare_input($_POST['sellingpointslaid']);
        if ($sellingpointslaid != '') {