/**
 * Get cell value for Lazada and Zalora catalog cell
 * @global Int $jng_sp_id
 * @global Array $sp_detail
 * @param String $column_key
 * @param Product $product
 * @param Int $aid
 * @return String
 */
function getLazadaZaloraCatalogCellValue($column_key, $product, $aid)
{
    global $class_pa, $class_pb, $jng_sp_id, $sp_detail, $sp_values_brand, $sp_values_colors, $sp_values_navcat, $sp_values_navsubcat, $category_top_id;
    $lid = $sp_detail['languages_id'];
    if (!isset($sp_values_brand[$product->brand_id])) {
        $sp_brands = $class_pb->getSPbrands($product->brand_id);
        $sp_values_brand[$product->brand_id] = $sp_brands[$jng_sp_id];
    }
    $product_old_function = $product->getOldProductFunction()->retrieveDetail($product->id, 'p,pd,pd2,pc,pnc,cat,pei,pci');
    $category_id = $product->category_id;
    switch ($column_key) {
        //MIXED COLUMNS FROM LAZADA AND ZALORA TEMPLATE
        //FROM LAZADA TEMPLATE (some is also used by Zalora)
        case 'Name':
            //TODO: Create new function getNameBySalesPartner
            //      using SalesPartner object, no more need for sp id check
            if ($jng_sp_id == '1001') {
                //LAZADA NAME
                if ($category_top_id == '1') {
                    //JEWELRY
                    $value = ucwords(strtolower($sp_values_brand[$product->brand_id])) . ' ' . $product_old_function['pd'][3]['products_name'] . ' ' . $product->getColors($lid);
                } else {
                    $value = ucwords(strtolower($sp_values_brand[$product->brand_id])) . ' ' . $product->getName($lid) . ' ' . $product->getColors($lid);
                }
            } else {
                if ($category_top_id == '1') {
                    $value = ucwords(strtolower($sp_values_brand[$product->brand_id])) . ' ' . $product_old_function['pd'][3]['products_name'] . ' ' . $product->getColors($lid);
                } else {
                    $value = $product->getName($lid);
                }
            }
            break;
        case 'PrimaryCategory':
            if ($jng_sp_id == '1002') {
                //27.04.2015 >> zalora made changed that primary category must same with sub category
                $param_key = $product->getSubCategory() . '-' . $product->getProductGenderID();
                $value = $sp_values_navsubcat[$param_key];
            } else {
                $param_key = $product->getCategory()->id . '-' . $product->getProductGenderID();
                $value = $sp_values_navcat[$param_key];
            }
            break;
        case 'Brand':
            $value = $sp_values_brand[$product->brand_id];
            break;
        case 'Categories':
            $param_key = $product->getSubCategory() . '-' . $product->getProductGenderID();
            $value = $sp_values_navsubcat[$param_key];
            break;
        case 'Model':
            $value = '';
            break;
        case 'Color':
            $value = $product->getColors($lid);
            break;
        case 'SalePrice':
            $price = $product->getPriceSelling($jng_sp_id);
            $price_old = $product->getPriceSellingOld($jng_sp_id);
            if ($price_old <= $price) {
                //show blank if its not discounted
                $price = '';
            }
            $value = $price;
            break;
        case 'Price':
            $price = $product->getPriceSelling($jng_sp_id);
            $price_old = $product->getPriceSellingOld($jng_sp_id);
            if ($price_old <= $price) {
                $price_old = $price;
            }
            $value = $price_old;
            break;
        case 'SaleStartDate':
            $price = $product->getPriceSelling($jng_sp_id);
            $price_old = $product->getPriceSellingOld($jng_sp_id);
            if ($price_old <= $price) {
                $sale_start_date = '';
            } else {
                $sale_start_date = date('Y-m-d');
            }
            $value = $sale_start_date;
            break;
        case 'SaleEndDate':
            $price = $product->getPriceSelling($jng_sp_id);
            $price_old = $product->getPriceSellingOld($jng_sp_id);
            if ($price_old <= $price) {
                $sale_end_date = '';
            } else {
                $sale_end_date = LAZADA_ZALORA_DEFAULT_SALE_END_DATE;
            }
            $value = $sale_end_date;
            break;
        case 'SellerSku':
            $value = $product->getSKU($aid);
            break;
        case 'Variation':
            //todo: translate ring sizes
            if ($category_top_id == '1') {
                if ($category_id == '29') {
                    $value = $product->convertRingSizeToJapaneseSize($product->getLengthOrSizeAsText($aid));
                } else {
                    $value = $jng_sp_id == '1001' ? 'One size' : 'One Size';
                }
            } else {
                $value = $product->getLengthOrSizeAsText($aid);
            }
            break;
        case 'ProductId':
            $value = $product->getEAN($aid);
            break;
        case 'ParentSku':
            $value = $product->getSKU('0');
            break;
        case 'Quantity':
            $value = $product->retrieveStockQuantity($aid);
            break;
            /*
                    case 'ProductLine':
               $value = $product->getKeywords($lid);
               break;
            */
        /*
                case 'ProductLine':
           $value = $product->getKeywords($lid);
           break;
        */
        case 'ColorFamily':
            $color_sp = '';
            $color_ids = $product->getColorIDAsArray();
            foreach ($color_ids as $cid) {
                if (isset($sp_values_colors[$cid])) {
                    $color_sp = $sp_values_colors[$cid];
                    break;
                }
            }
            $value = $color_sp;
            break;
            /*
                    case 'MaterialFamily':
               $value = '';
               break;
                    case 'MainMaterial':
               $value = '';
               break;
            */
        /*
                case 'MaterialFamily':
           $value = '';
           break;
                case 'MainMaterial':
           $value = '';
           break;
        */
        case 'Description':
            $value = $product->getDescription($lid);
            break;
        case 'Video':
            $value = '';
            break;
        case 'ShortDescription':
            $value = $product->getSellingPointsAsHTML($lid);
            break;
        case 'PackageContent':
            if ($jng_sp_id == '1001') {
                //LAZADA NAME
                if ($category_top_id == '1') {
                    //JEWELRY
                    $product_name = ucwords(strtolower($sp_values_brand[$product->brand_id])) . ' ' . $product_old_function['pd'][3]['products_name'] . ' ' . $product->getColors($lid);
                } else {
                    $product_name = ucwords(strtolower($sp_values_brand[$product->brand_id])) . ' ' . $product->getName($lid) . ' ' . $product->getColors($lid);
                }
            } else {
                if ($category_top_id == '1') {
                    $product_name = ucwords(strtolower($sp_values_brand[$product->brand_id])) . ' ' . $product_old_function['pd'][3]['products_name'] . ' ' . $product->getColors($lid);
                } else {
                    $product_name = $product->getName($lid);
                }
            }
            $pc_list = array();
            $pc_list[] = $product_name;
            $pc_more_separator = '|||';
            $pc_list_more = ProductAttribute::displayAttributeName($product->id, ProductAttribute::GROUP_ID_PACKAGE_CONTENT, $lid, $pc_more_separator);
            if ($pc_list_more != '') {
                $pc_list_more_array = explode($pc_more_separator, $pc_list_more);
                foreach ($pc_list_more_array as $pc) {
                    $pc_list[] = $pc;
                }
            }
            $value = '<ul><li>' . implode('</li><li>', $pc_list) . '</li></ul>';
            break;
            /*    
                    case 'Note':
               $value = '';
               break;
            */
        /*    
                case 'Note':
           $value = '';
           break;
        */
        case 'MinDeliveryTime':
            $value = '2';
            break;
        case 'MaxDeliveryTime':
            $value = '5';
            break;
        case 'ProductMeasures':
            //ProductMeasures is from Lazada Template
        //ProductMeasures is from Lazada Template
        case 'Measurements':
            //Measurements is from Zalora Template
            if ($jng_sp_id == '1002') {
                $value = $product->displayMeasurement(1, $aid, '', $category_top_id == 1 || $category_top_id == 3 ? Product::FORMAT_DISPLAYMEASUREMENT_PM1 : Product::FORMAT_DISPLAYMEASUREMENT_AM2);
            } else {
                $value = $product->displayMeasurement($lid);
            }
            break;
        case 'ProductWeight':
            $value = $product->displayWeight($lid);
            break;
        case 'PackageHeight':
            //todo: use dynamic data
            $value = 3;
            break;
        case 'PackageWidth':
            //todo: use dynamic data
            $value = 35;
            break;
        case 'PackageLength':
            //todo: use dynamic data
            $value = 40;
            break;
        case 'PackageWeight':
            //todo: use dynamic data
            // 0.1 kg package * 300 gr default product weight
            $value = 0.4;
            break;
        case 'Certifications':
            $value = '';
            break;
        case 'ProductionCountry':
            $value = ProductAttribute::displayAttributeName($product->id, ProductAttribute::GROUP_ID_ORIGIN, $lid);
            break;
        case 'ManufacturerTxt':
            $value = '';
            break;
        case 'CareLabel':
            $value = ucfirst(strtolower(ProductAttribute::displayAttributeName($product->id, ProductAttribute::GROUP_ID_CARELABEL, $lid)));
            break;
        case 'ProductWarranty':
            $value = '';
            break;
        case 'MainImage':
            if ($jng_sp_id == '1001') {
                //send to lazada for all category products with image ratio 2 x 3
                $value = $product->getMainImageURL(1110, 1665);
            } else {
                $value = $product->getMainImageURL();
            }
            break;
        case 'Image2':
            $value = $product->getAdditionalImageURL(0, '');
            break;
        case 'Image3':
            $value = $product->getAdditionalImageURL(1, '');
            break;
        case 'Image4':
            $value = $product->getAdditionalImageURL(2, '');
            break;
        case 'Image5':
            $value = $product->getAdditionalImageURL(3, '');
            break;
        case 'Image6':
            $value = $product->getAdditionalImageURL(4, '');
            break;
        case 'Image7':
            $value = $product->getAdditionalImageURL(5, '');
            break;
        case 'Image8':
            $value = $product->getAdditionalImageURL(6, '');
            break;
        case 'Gender':
            $value = ucfirst($product->getProductGender('1'));
            break;
        case 'Season':
            $value = 'Year Round';
            break;
        case 'CompositionMaterial':
            $value = ucfirst(strtolower(ProductAttribute::displayAttributeName($product->id, ProductAttribute::GROUP_ID_COMPOSITION, $lid, ' ')));
            break;
        case 'Year':
            $value = date('Y');
            break;
            //FROM ZALORA TEMPLATE (not exist in Lazada)
        //FROM ZALORA TEMPLATE (not exist in Lazada)
        case 'Sizesystembrand':
            $value = '';
            //Zalora category Shoes
            if ($jng_sp_id == '1002' && $category_top_id == '4') {
                $value = 'EU';
            }
            break;
            //FROM ZALORA TEMPLATE (not exist in Lazada)
        //FROM ZALORA TEMPLATE (not exist in Lazada)
        case 'UpperMaterial':
            $value = '';
            //Zalora category Shoes
            if ($jng_sp_id == '1002' && $category_top_id == '4') {
                $value = 'Synthetic Leather';
            }
            break;
            //FROM ZALORA TEMPLATE (not exist in Lazada)
        //FROM ZALORA TEMPLATE (not exist in Lazada)
        case 'SoleMaterial':
            $value = '';
            //Zalora category Shoes
            if ($jng_sp_id == '1002' && $category_top_id == '4') {
                $value = 'PU';
            }
            break;
            //FROM ZALORA TEMPLATE (not exist in Lazada)
        //FROM ZALORA TEMPLATE (not exist in Lazada)
        case 'BuyerName':
            $value = '';
            break;
            //FROM ZALORA TEMPLATE (not exist in Lazada)
        //FROM ZALORA TEMPLATE (not exist in Lazada)
        case 'ModelsName':
            $value = '';
            break;
            //FROM ZALORA TEMPLATE (not exist in Lazada)
        //FROM ZALORA TEMPLATE (not exist in Lazada)
        case 'VirtusizeType':
            $value = '';
            break;
            //FROM ZALORA TEMPLATE (not exist in Lazada)
        //FROM ZALORA TEMPLATE (not exist in Lazada)
        case 'ShowChart':
            $value = '';
            break;
            //FROM ZALORA TEMPLATE (not exist in Lazada)
        //FROM ZALORA TEMPLATE (not exist in Lazada)
        case 'ShowVirtusize':
            $value = '';
            break;
            //FROM ZALORA TEMPLATE (not exist in Lazada)
        //FROM ZALORA TEMPLATE (not exist in Lazada)
        case 'SubCatType':
            $value = '';
            break;
            //FROM ZALORA TEMPLATE (not exist in Lazada)
        //FROM ZALORA TEMPLATE (not exist in Lazada)
        case 'WrapEligibility':
            $value = '';
            break;
        case 'SizeOrigin':
            $value = '';
            break;
        case 'Movement':
            $value = '';
            break;
        case 'Strap':
            $value = '';
            break;
        case 'MovementCountry':
            $value = '';
            break;
        case 'Condition':
            $value = 'Baru';
            break;
        default:
            $value = '';
    }
    return $value;
}