$article_counter = 0; foreach ($pids as $pid) { $product_counter++; $p = new Product($pid); if ($show_minimum_data) { $price_uvp = 'N/A'; $price_default = 'N/A'; $price_selling_old_amazon = 'N/A'; $price_selling_amazon = 'N/A'; $mat_exp = $p->material_expense; $cogs = 'N/A'; } else { $price_uvp = $p->getPriceUVP(); $price_default = $p->getPriceDefault(); $price_selling_old_amazon = $p->getPriceSellingOld($sp_id_amazon); $price_selling_amazon = $p->getPriceSelling($sp_id_amazon); $mat_exp = $p->material_expense; $cogs = $p->getProductCOGSValue(); $report_cogs_lastyear = ReportCOGS::retrieveSummaryByArticles($pids, '*', $last_year_start, $last_year_end); $report_cogs_thisyear = ReportCOGS::retrieveSummaryByArticles($pids, '*', $this_year_start, $this_year_end); } foreach ($p->articles as $aid => $a) { if ($p->isArticleKilled($aid)) { continue; } $article_counter++; $ean = $p->getEAN($aid); $size = $p->getLengthOrSizeAsText($aid); if ($show_minimum_data) { $stock_available = 'N/A'; $booked = 'N/A';
function drawProductPriceTable(Product $product, $message = '') { global $class_sp; //$supported_sp = array('2', '5', '7', '8'); //$sp_filer = 'jng_sp_id IN ('.implode(',', $supported_sp).') AND '; $show_jng = !SERVER_IS_LOCAL; $sp_b2c = $class_sp->retrieveList('use_amvd_logistic = 0'); $sp_b2b = $class_sp->retrieveList('use_amvd_logistic = 1'); $total_sp_b2c = count($sp_b2c); if ($show_jng) { $total_sp_b2c += 1; } $total_sp_b2b = count($sp_b2b); $result = '<div id="price-pid-' . $product->id . '" class="product" ' . 'style="clear:left;float:left;margin-bottom:20px;">' . '<div class="draw-table">' . '<table border="0" cellpadding="0" cellspacing="0">' . '<tr>' . '<th rowspan="2">Product</th>' . '<th colspan="2">Info</th>' . '<th colspan="' . $total_sp_b2c . '">B2C</th>'; foreach ($sp_b2b as $sp) { if ($product->isAddedToSalesPartner($sp['jng_sp_id'])) { $btn_addto_catalog = ''; } else { $btn_addto_catalog = '<div style="float:right;"><input ' . 'type="button" class="addtocat" value="add" /></div>'; } $result .= '<th colspan="2">B2B - ' . $sp['package_prefix'] . '</th>'; /* $result .= '<th colspan="2"><div>B2B - ' . $sp['package_prefix'].'</div>' . $btn_addto_catalog . '</th>'; */ } $result .= $b2b . '</tr>' . '<tr>' . '<th>Name</th>' . '<th class="bold">DEFAULT</th>'; if ($show_jng) { $result .= '<th>JG.DE</th>'; } foreach ($sp_b2c as $sp) { $result .= '<th>' . $sp['package_prefix'] . '</th>'; } foreach ($sp_b2b as $sp) { $result .= '<th>No Discount</th>'; $result .= '<th>Discount</th>'; } $jng_id = '0'; $cogs = $product->getProductCOGSValue(); $price_uvp = $product->getPriceUVP(); $price_uvp_text = displayCurrency(CURRENCY_DEFAULT, $price_uvp, false, 2); $price_default = $product->getPriceDefault(); $price_default_text = displayCurrency(CURRENCY_DEFAULT, $price_default, false, 2); $price_jng = $product->getPriceSelling($jng_id); $price_options = array('Show Discount', 'Hide Discount'); //, 'No Discount'); $price_options_combo = '<select name="price_option" style="display:none;">' . '%s</select><span class="notice price_option_none" style="display:none;">' . 'No Discount</span>'; $price_option_jng = loadComboListFromArray($price_options, null, $product->isPriceSellingUsingDiscount($jng_id) ? 0 : 1, false); $sp_type_default = '<input type="hidden" name="sp_type" value="DEF" />'; $sp_type_b2c = '<input type="hidden" name="sp_type" value="B2C" />'; $sp_type_b2b_nodisc = '<input type="hidden" name="sp_type" value="B2B-ND" />'; $sp_type_b2b_disc = '<input type="hidden" name="sp_type" value="B2B-D" />'; $sp_id_jng = '<input type="hidden" name="sp_id" value="0" />'; if (SERVER_IS_LOCAL) { $class_add = ' readonly'; $editable = ' readonly="readonly"'; } else { $class_add = ''; $editable = ''; } $result .= '</tr>' . '<tr class="o">' . '<td class="w200 tac"><div>' . $product->displayImage(IMAGE_SIZE_THUMBNAIL_2, IMAGE_SIZE_THUMBNAIL_2_PORTRAIT) . '</div>' . '<div>' . $product->displayIDAndCode() . '</div>' . '</td>' . '<td class="w150">' . '<div class="cr cr-status">Status</div>' . '<div class="cr cr-uvp">UVP</div>' . '<div class="cr cr-sp">Selling Price</div>' . '<div class="cr cr-factor">Factor</div>' . '<div class="cr cr-disc">Discount</div>' . '<div class="cr cr-option">Price Option</div>' . '<div class="cr cr-preview">Price Preview</div>' . '<div class="cr cr-cogs">COGS</div>' . '<div class="cr cr-profit">Profit</div>' . '<div class="cr cr-margin">Margin</div>' . '<div class="cr cr-premium">Premium</div>' . '</td>' . '<td class="w100 tac">' . '<input type="hidden" name="cogs" value="' . $cogs . '" />' . '<div class="cr cr-status notice">-</div>' . '<div class="cr cr-uvp"><input type="text" name="price-uvp-default" class="w080 tac' . $class_add . '" value="' . $price_uvp . '"' . $editable . ' /></div>' . '<div class="cr cr-sp"><input type="text" name="price-default" class="w080 tac' . $class_add . '" value="' . $price_default . '"' . $editable . ' />' . $sp_type_default . '</div>' . '<div class="cr cr-factor notice">-</div>' . '<div class="cr cr-disc"> </div>' . '<div class="cr cr-option notice">-</div>' . '<div class="cr cr-preview"> </div>' . '<div class="cr cr-cogs">' . $cogs . '</div>' . '<div class="cr cr-profit"> </div>' . '<div class="cr cr-margin"> </div>' . '<div class="cr cr-premium"> </div>' . '</td>'; if ($show_jng) { //COLUMN J&G $result .= '<td class="w100 tac">' . '<div class="cr cr-status">' . $product->displayActiveStatusIcon($jng_id) . '</div>' . '<div class="cr cr-uvp"><input type="text" name="price-uvp" class="w080 tac b2c readonly" value="' . $price_uvp . '" readonly="readonly" />' . $sp_type_b2c . $sp_id_jng . '</div>' . '<div class="cr cr-sp"><input type="text" name="price-selling" class="w080 tac b2c" value="' . $price_jng . '" />' . $sp_type_b2c . $sp_id_jng . '</div>' . '<div class="cr cr-factor notice">-</div>' . '<div class="cr cr-disc"> </div>' . '<div class="cr cr-option">' . sprintf($price_options_combo, $price_option_jng) . $sp_id_jng . '</div>' . '<div class="cr cr-preview"> </div>' . '<div class="cr cr-cogs notice">' . $cogs . '</div>' . '<div class="cr cr-profit"> </div>' . '<div class="cr cr-margin"> </div>' . '<div class="cr cr-premium"> </div>' . '</td>'; } //COLUMN PER SP (B2C) foreach ($sp_b2c as $sp) { $result .= '<td class="w100 tac">'; $result .= '<div class="cr cr-status">' . $product->displayActiveStatusIcon($sp['jng_sp_id']) . '</div>'; if ($product->isAddedToSalesPartner($sp['jng_sp_id'])) { $sp_id = '<input type="hidden" name="sp_id" value="' . $sp['jng_sp_id'] . '" />'; $price_selling_old = $product->getPriceSellingOld($sp['jng_sp_id']); $price_selling = $product->getPriceSelling($sp['jng_sp_id']); $price_option_sp = loadComboListFromArray($price_options, null, $product->isPriceSellingUsingDiscount($sp['jng_sp_id']) ? 0 : 1, false); if (SERVER_IS_LOCAL) { $price_uvp_sp = $price_selling_old > 0 ? $price_selling_old : $price_selling; $sp_uvp_class = ''; $sp_uvp_dis = ''; } else { $price_uvp_sp = $price_uvp; $sp_uvp_class = ' readonly'; $sp_uvp_dis = ' readonly="readonly"'; } $result .= '<div class="cr cr-uvp">' . '<input type="text" name="price-uvp" class="w080 tac b2c' . $sp_uvp_class . '"' . ' value="' . $price_uvp_sp . '" ' . $sp_uvp_dis . ' />' . $sp_id . '</div>'; $result .= '<div class="cr cr-sp"><input type="text" name="price-selling" class="w080 tac b2c" value="' . $price_selling . '" />' . $sp_type_b2c . $sp_id . '</div>' . '<div class="cr cr-factor notice">-</div>' . '<div class="cr cr-disc"> </div>' . '<div class="cr cr-option">' . sprintf($price_options_combo, $price_option_sp) . $sp_id . '</div>' . '<div class="cr cr-preview"> </div>' . '<div class="cr cr-cogs notice">' . $cogs . '</div>' . '<div class="cr cr-profit"> </div>' . '<div class="cr cr-margin"> </div>' . '<div class="cr cr-premium"> </div>'; } else { // $result .= '<span class="red">Not<br />added<br />yet to' . // '<br />catalog</span><br /><br /><input type="button" ' . // 'value="Add Now" title="Click here to add product now '. // 'to this Sales Partner Catalog" />'; $result .= '<div class="cr cr-uvp notice">-</div>' . '<div class="cr cr-sp notice">-</div>' . '<div class="cr cr-factor notice">-</div>' . '<div class="cr cr-disc notice">-</div>' . '<div class="cr cr-option notice">-</div>' . '<div class="cr cr-preview notice">Not Added to Catalog</div>' . '<div class="cr cr-cogs notice">-</div>' . '<div class="cr cr-profit notice">-</div>' . '<div class="cr cr-margin notice">-</div>' . '<div class="cr cr-premium notice">-</div>'; } $result .= '</td>'; } //2 COLUMNS PER SP (B2B) foreach ($sp_b2b as $sp) { $status = $product->displayActiveStatusIcon($sp['jng_sp_id']); $status_nodisc = ' '; $status_disc = ' '; $sp_id = '<input type="hidden" name="sp_id" value="' . $sp['jng_sp_id'] . '" />'; $b2b_disc_status_checked = ''; $b2b_disc_disabled = ''; $default_discount = 0.5; $selling_price_notsaved_title = ''; $selling_price_notsaved_class = ''; if ($product->isAddedToSalesPartner($sp['jng_sp_id'])) { $price_selling = $product->getPriceSelling($sp['jng_sp_id']); $price_selling_old = $product->getPriceSellingOld($sp['jng_sp_id']); if ($price_selling_old == 0) { $status_nodisc = $status; $price_selling_old = $price_selling; $price_selling = round((1 - $default_discount) * $price_selling_old, 2); } else { $status_disc = $status; $b2b_disc_status_checked = ' checked="checked"'; } } else { $status_nodisc = $status; $status_disc = $status; $price_selling_old = $product->getPriceSellingDefaultB2B($price_uvp, $sp['jng_sp_id']); $price_selling = round((1 - $default_discount) * $price_selling_old, 2); $b2b_disc_disabled = ' disabled="disabled"'; $selling_price_notsaved_title = ' title="Value is for simulation only and can not be saved because this product is not added to SP catalog"'; $selling_price_notsaved_class = ' notice'; } $b2b_ds_cb_id = 'po-' . $product->id . '-' . $sp['jng_sp_id']; $b2b_disc_status = '<input id="' . $b2b_ds_cb_id . '" type="checkbox" name="price_option"' . $b2b_disc_status_checked . $b2b_disc_disabled . ' /> <label for="' . $b2b_ds_cb_id . '">Active</label>'; $price_selling_id = 'ps-' . $product->id . '-' . $sp['jng_sp_id']; $result .= '<td class="w100 tac">' . '<div class="cr cr-status">' . $status_nodisc . '</div>' . '<div class="cr cr-uvp">' . '<input type="text" name="price-uvp" class="w080 tac b2c readonly"' . ' value="' . $price_uvp . '" readonly="readonly" />' . $sp_id . '</div>' . '<div class="cr cr-sp"><input id="' . $price_selling_id . '-old" type="text" name="price-selling" class="w080 tac b2b-nd' . $selling_price_notsaved_class . '"' . $selling_price_notsaved_title . ' value="' . $price_selling_old . '" />' . $sp_type_b2b_nodisc . $sp_id . '</div>' . '<div class="cr cr-factor"> </div>' . '<div class="cr cr-disc notice">-</div>' . '<div class="cr cr-option notice">-</div>' . '<div class="cr cr-preview"> </div>' . '<div class="cr cr-cogs notice">' . $cogs . '</div>' . '<div class="cr cr-profit"> </div>' . '<div class="cr cr-margin"> </div>' . '<div class="cr cr-premium"> </div>' . '</td>' . '<td class="w100 tac">' . '<div class="cr cr-status">' . $status_disc . '</div>' . '<div class="cr cr-uvp">' . '<input type="text" name="price-uvp" class="w080 tac b2c readonly"' . ' value="' . $price_uvp . '" readonly="readonly" />' . $sp_id . '</div>' . '<div class="cr cr-sp"><input id="' . $price_selling_id . '" type="text" name="price-selling" class="w080 tac b2b-d' . $selling_price_notsaved_class . '"' . $selling_price_notsaved_title . ' value="' . $price_selling . '" />' . $sp_type_b2b_disc . $sp_id . '</div>' . '<div class="cr cr-factor"> </div>' . '<div class="cr cr-disc"> </div>' . '<div class="cr cr-option">' . $b2b_disc_status . $sp_id . '</div>' . '<div class="cr cr-preview"> </div>' . '<div class="cr cr-cogs notice">' . $cogs . '</div>' . '<div class="cr cr-profit"> </div>' . '<div class="cr cr-margin"> </div>' . '<div class="cr cr-premium"> </div>' . '</td>'; } $result .= '</tr></table></div>'; $message_block = ''; $button_style = ''; if ($message != '') { $button_style = ' style="display:none;"'; $message_block .= '<h3 class="green">' . $message . '</h3>'; } $result .= '<div class="tar" style="margin-top:5px;"><input type="button"' . ' class="w400 button" name="save-price" value="Save Product Price" ' . $button_style . '/>' . $message_block . '</div>' . '</div>'; return $result; }
/** * For handling submitted POST * @global array $session_userinfo * @param array $post_vars */ public function postProcess($post_vars) { global $session_userinfo; $result = array(); if ($post_vars['me_action'] == 'SEARCH') { $type = $post_vars['type']; $jng_sp_id = $post_vars['jng_sp_id']; //another strange case, in live datepicker filter is always given as \'datevalue\' instead of 'datevalue' //still cant find the root cause (and it's ok in local dev), so for quickwin workaround we simple replace //the \' value into ' with below update (sahat 11.02.2014) //$post_filters = explode("|", $post_vars['post_filters']); $post_filters = explode("|", str_replace('\\\'', "'", $post_vars['post_filters'])); $post_sorts = explode("|", $post_vars['post_sorts']); $filters = array(); foreach ($post_filters as $f) { $f_temp = explode('-', $f); $field = $f_temp[0]; unset($f_temp[0]); $value = implode('-', $f_temp); //explode to array for input on field $multivalue_fields which allowed multivalue separated by $multivalue_separator if (in_array($field, $this->multivalue_fields)) { $mv_temp = explode(current($this->multivalue_separator), $value); if (is_array($mv_temp) && $mv_temp > 0) { foreach ($mv_temp as $mv) { $mv = trim($mv); if (!isset($filters[$field]) || !in_array($mv, $filters[$field])) { $filters[$field][] = $mv; } } } else { $filters[$field][] = $value; } } else { $filters[$field][] = $value; } } $sorts = array(); foreach ($post_sorts as $s) { list($field, $value) = explode("-", $s); $sorts[$field][] = $value; } $query = $this->constructQuery($jng_sp_id, $filters, $sorts); //die($query); $dbq = tep_db_query($query); $result = ''; $products_ids = array(); $total_stock = 0; $total_stock_value = 0; $total_margin = 0; $total_sold = 0; $total_rets = 0; $total_sales = 0; $total_vc = 0; $total_sold_l30d = 0; $total_sold_l60d = 0; $total_sold_l90d = 0; $total_sales_l30d = 0; $total_sales_l60d = 0; $total_sales_l90d = 0; $display_spot = ''; while ($r = tep_db_fetch_array($dbq)) { $products_ids[] = $r['products_id']; $total_stock += $r['hh_stock']; $total_stock_value += $r['hh_stock_value']; $total_margin += $r['margin']; $total_sold += $r['total_sold']; $total_rets += $r['total_returned']; $total_sales += $r['total_sales']; $vc += $r['vc_now']; //$total_vc += $r['total_vc']; $total_vc += $r['vc_total']; $total_sold_l30d += $r['sold_monthly_1']; $total_sold_l60d += $r['sold_monthly_2']; $total_sold_l90d += $r['sold_monthly_3']; $total_sales_l30d += $r['sales_monthly_1']; $total_sales_l60d += $r['sales_monthly_2']; $total_sales_l90d += $r['sales_monthly_3']; } $jng_nodata = '<span class="notice">N/A for J&G</span>'; $returned_rate = number_format($total_sold > 0 ? $total_rets / $total_sold * 100 : 0, 1); $n_products_ids = count($products_ids); $result['type'] = $type; $result['spid'] = $jng_sp_id; $result['avg_margin'] = ($n_products_ids > 0 ? number_format($total_margin / $n_products_ids, 1) : 0) . '%'; $result['total'] = $n_products_ids; $result['total_stock'] = $total_stock; $result['total_stock_value'] = displayCurrency(CURRENCY_DEFAULT, convertCurrency($total_stock_value, CURRENCY_CODE_EURO, CURRENCY_DEFAULT)); $result['total_sold'] = $jng_sp_id == '0' ? $jng_nodata : $total_sold; $result['total_rets'] = $jng_sp_id == '0' ? $jng_nodata : $total_rets . " ({$returned_rate}%)"; $result['total_sales'] = $jng_sp_id == '0' ? $jng_nodata : displayCurrency(DEFAULT_CURRENCY, $total_sales); $result['vc'] = $jng_sp_id == '0' ? $jng_nodata : number_format($vc, 2); //$result['total_vc'] = number_format($total_vc, 2); $result['vc_total'] = $jng_sp_id == '0' ? $jng_nodata : number_format($total_vc, 2); $result['total_sales_l30d'] = displayCurrency(DEFAULT_CURRENCY, $total_sales_l30d); $result['total_sales_l60d'] = displayCurrency(DEFAULT_CURRENCY, $total_sales_l60d); $result['total_sales_l90d'] = displayCurrency(DEFAULT_CURRENCY, $total_sales_l90d); $result['total_sold_l30d'] = $total_sold_l30d; $result['total_sold_l60d'] = $total_sold_l60d; $result['total_sold_l90d'] = $total_sold_l90d; $result['products_ids'] = implode(',', $products_ids); } elseif ($post_vars['me_action'] == 'DISPLAY') { use_class('products_minierp'); use_class('minierp_users'); use_class('Product'); $class_pm = new products_minierp(); $class_mu = new minierp_users(); $jng_sp_id = $post_vars['jng_sp_id']; $type = $post_vars['type']; $products_id = $post_vars['products_id']; $is_killed = $post_vars['is_killed']; $is_sp_not_yet_added = $post_vars['is_sp_not_yet_added']; $added_post_vars = array('is_killed' => $is_killed, 'is_sp_not_yet_added' => $is_sp_not_yet_added); $display_type = $post_vars['display_type']; $row_number = $post_vars['row_number']; $showing_id = $post_vars['showing_id']; $obj_product = new Product($products_id); $display_res = $this->retrieveDataForDisplay($jng_sp_id, $products_id, $added_post_vars, $display_type); $res = $display_res[0]; $img_size = $display_type == 'thumbnail' ? IMAGE_SIZE_THUMBNAIL_2 : IMAGE_SIZE_THUMBNAIL_1; //SHOW PURE IMAGE FOR SP THAT USED IT AS MAIN IMAGE if (in_array($jng_sp_id, $this->sp_use_pure_image)) { $obj_product->setDisplayImage(Product::IMAGE_TYPE_ZALANDO); } else { if (in_array($jng_sp_id, $this->sp_use_clear_image)) { $obj_product->setDisplayImage(Product::IMAGE_TYPE_AMAZON); } } //$products_image = webImageWithDetailLinkStars($image_used, $img_size, $img_size, 'Product '.$products_id, 'img-border', 'View Larger Image', IMAGE_SIZE_BIG_1, '', $res['stars'], 3, '', '', $res['products_brand_id']); $products_image = $obj_product->displayImage($img_size, $img_size); $position_padding = $display_type == 'thumbnail' ? '2px 0 0 15px;' : ''; $products_image = webImageAddPosition($row_number, $products_image, $position_padding); $products_complexity = productComplexityName($res['complexity']); $products_stars = drawStars($res['stars']); $products_is_watched = $class_mu->isOnWatchlist($session_userinfo['id'], $products_id); $resultsdt = array(); if ($display_type == 'table' || $type == 'displaytooltip') { if ($type == 'thumbnail_tooltip') { //HTML Version result $sales_partner_id = $jng_sp_id == 'allsp' ? '0' : $jng_sp_id; //TODO: seperate B2C and B2b calculation, or even better is if // we can calculate it by the object directly $price = $obj_product->getPriceSelling($sales_partner_id); $net_price = Product::calculateNetPrice($price, VAT); $cogs = $obj_product->getProductCOGSValue(); $profit = Product::calculateProfit($net_price, $cogs); $margin = Product::calculateMargin($profit, $net_price); $jng_nodata = '<span class="notice">N/A for J&G</span>'; $infos = array(); $infos[] = $obj_product->displayIDAndCode(); $infos[] = $res['products_name']; if ($res['hh_stock'] > 0) { $infos[] = '<strong class="green">Depot Stock = ' . $res['hh_stock'] . '</strong>'; } else { $infos[] = '<strong>Depot Stock = 0</strong>'; } $infos[] = 'Complexity = ' . $products_complexity; if ($res['sample_created'] == '1') { $infos[] = '<span class="green">Sample order created</span>'; } else { $infos[] = '<span class="notice">No sample order created</span>'; } if ($jng_sp_id == '0') { $total_sold = $jng_nodata; $return_info = $jng_nodata; $qty_sold = $jng_nodata; } else { $returned_rate = number_format($res['returned_rate'], 1); $sales_monthly = number_format($res['sales_monthly'], 1); $sales_weekly = number_format($res['sales_weekly'], 1); $total_sold = $res['total_sold']; $return_info = $res['total_returned'] . ' (' . $returned_rate . '%)'; $qty_sold = "per Week: {$sales_weekly} ⋅ per Month: {$sales_monthly}"; } $tooltip = '<div class="draw-table"><table border="0" cellpadding="0" cellspacing="0">'; $tooltip .= '<tr class="o"><td class="w200 bold">Brand</td><td class="w300 bold">' . $res['brand_name'] . '</td></tr>'; $tooltip .= '<tr class="e"><td>Info</td><td>• ' . implode('<br />• ', $infos) . '</td></tr>'; $tooltip .= '<tr class="o"><td>Price Preview</td><td>' . $obj_product->displayPricePreview($sales_partner_id) . '</td></tr>'; $tooltip .= '<tr class="e"><td>Margin in %</td><td>' . $obj_product->displayMargin($price, $margin) . '</td></tr>'; $tooltip .= '<tr class="o"><td>Age JG (finalized)</td><td>' . $res['jng_products_age'] . ' days</td></tr>'; $tooltip .= '<tr class="e"><td>Age (selected SP filter)</td><td>' . $res['products_age'] . ' days</td></tr>'; $tooltip .= '<tr class="o"><td>Total Sold (excl. JG)</td><td>' . $total_sold . '</td></tr>'; $tooltip .= '<tr class="e"><td>Total Returns (excl. JG)</td><td>' . $return_info . '</td></tr>'; $tooltip .= '<tr class="o"><td>Pieces Sold</td><td>' . str_replace('align="center"', 'align="left"', $obj_product->displayRecentSoldTable()) . '</div></td></tr>'; $tooltip .= '<tr class="e"><td>Qty. Sold (excl. JG)</td><td>' . $qty_sold . '</td></tr>'; $tooltip .= '</table></div>'; $ajaxResult = array(); $ajaxResult['type'] = $type; $ajaxResult['spid'] = $jng_sp_id; $ajaxResult['products_id'] = $products_id; $ajaxResult['tooltip'] = $tooltip; $ajaxResult['rownumber'] = $row_number; $ajaxResult['showingid'] = $showing_id; ajaxReturn($ajaxResult); } else { $sales_partner_id = $jng_sp_id == 'allsp' ? '0' : $jng_sp_id; $price = $obj_product->getPriceSelling($sales_partner_id); $net_price = Product::calculateNetPrice($price, VAT); $cogs = $obj_product->getProductCOGSValue(); $profit = Product::calculateProfit($net_price, $cogs); $margin = Product::calculateMargin($profit, $net_price); $material_expenses = displayCurrency(DEFAULT_CURRENCY, convertCurrency($res['material_expenses'], 'EUR', DEFAULT_CURRENCY), false); $products_price = displayCurrency(DEFAULT_CURRENCY, $res['products_price'], false); $products_price_old = displayCurrency(DEFAULT_CURRENCY, $res['products_price_old'], false); $products_created = date('d-M-Y', strtotime($res['products_date_added'])); $vc_now = number_format($res['vc_now'], 2); $total_vc = number_format($res['vc_total'], 2); $vc_percent = number_format($res['vc_percent'], 1); //$margin = $res['margin']; //$margin = '<span class="'.(($class_pm->priceMargindIsGood($res['products_price'], $margin)) ? 'green' : 'red') . '">' . // number_format($margin, 1) . '%</span>'; $margin = $obj_product->displayMargin($price, $margin); $returned_rate = number_format($res['returned_rate'], 1); $discount = number_format($res['products_discount'], 2); $total_sales = number_format($res['total_sales'], 2); $sales_monthly = number_format($res['sales_monthly'], 1); $sales_weekly = number_format($res['sales_weekly'], 1); $jng_nodata = '<span class="notice">N/A' . ($type == 'displaytooltip' ? ' ' : '<br />') . 'for J&G</span>'; //0-4 $resultsdt[] = $products_image; $resultsdt[] = $products_id; $resultsdt[] = $res['products_model']; $resultsdt[] = $res['products_name']; //$resultsdt[] = $class_pm->displayProductName($products_id); $resultsdt[] = $products_price_old; //5-9 $resultsdt[] = $products_price; $resultsdt[] = $discount; $resultsdt[] = $jng_sp_id == '0' ? $jng_nodata : $vc_now; $resultsdt[] = $jng_sp_id == '0' ? $jng_nodata : $vc_percent; $resultsdt[] = $margin; //10-14 $resultsdt[] = $res['products_age']; $resultsdt[] = $jng_sp_id == '0' ? $jng_nodata : $res['total_sold']; $resultsdt[] = $jng_sp_id == '0' ? $jng_nodata : $total_vc; $resultsdt[] = $res['total_returned']; $resultsdt[] = $jng_sp_id == '0' ? $jng_nodata : $returned_rate; //15-19 $resultsdt[] = $jng_sp_id == '0' ? $jng_nodata : $total_sales; $resultsdt[] = $res['sold_monthly_1']; $resultsdt[] = $res['sold_monthly_2']; $resultsdt[] = $res['sold_monthly_3']; $resultsdt[] = $jng_sp_id == '0' ? $jng_nodata : $sales_weekly; //20-24 $resultsdt[] = $jng_sp_id == '0' ? $jng_nodata : $sales_monthly; $resultsdt[] = $res['brand_name']; $resultsdt[] = $res['kill_status']; $resultsdt[] = $products_created; $resultsdt[] = $res['hh_stock']; //25-28 $resultsdt[] = $products_complexity; $resultsdt[] = $products_stars; $resultsdt[] = $products_is_watched; $resultsdt[] = $res['sample_created']; //29 $resultsdt[] = $res['jng_products_age']; $resultsdt[] = $material_expenses; $resultsdt[] = $res['products_length']; } } elseif ($display_type == 'thumbnail') { //0-4 $resultsdt[] = $products_image; $resultsdt[] = $products_id; $resultsdt[] = $res['products_model']; $resultsdt[] = $products_stars; $resultsdt[] = $products_is_watched; //5 $resultsdt[] = $res['sample_created']; } $result['type'] = $type; $result['spid'] = $jng_sp_id; $result['result'] = implode($this->result_separator, $resultsdt); $result['rownumber'] = $row_number; $result['showingid'] = $showing_id; } ajaxReturn($result); }
$row[] = $p->getSKU($aid); } //Quantity if ($category_top_id == '1') { if ($category_id == '29') { if ($a['length'] > 4.6 && $a['length'] < 6.0) { $row[] = $p->retrieveStockQuantity($aid); } } else { $row[] = $p->retrieveStockQuantity(0); } } else { $row[] = $p->retrieveStockQuantity($aid); } //Price $price = $p->getPriceSelling($jng_sp_id); $price_old = $p->getPriceSellingOld($jng_sp_id); if ($price_old <= $price) { $row[] = $price; } else { $row[] = $price_old; } //SalePrice if ($price_old <= $price) { //show blank if its not discounted $row[] = ''; } else { $row[] = $price; } //SaleStartDate if ($price_old <= $price) {
$e = new element($pue['elements_id']); if ($e->attributes['category']['id'] == '5') { $matname = explode(', ', $e->attributes['material']['name']); $stones_mats[$matname[0]] += $pue['quantity']; $stones_sizes[$e->attributes['size']['name']] += $pue['quantity']; } } if (count($stones_mats) > 0) { $stones_bq = max($stones_mats); $materials_stone = array_search($stones_bq, $stones_mats); } if (count($stones_sizes) > 0) { $stones_bq = max($stones_sizes); $materials_stone_size = array_search($stones_bq, $stones_sizes); } $cost_price = $obj_product->isPriceSellingUsingDiscount($jng_sp_id) ? $obj_product->getPriceSelling($jng_sp_id) : $obj_product->getPriceSellingOld($jng_sp_id); $row = array(); $row[] = 'X'; $row[] = $ean; $row[] = ''; //EAN rule checker $row[] = $pdata['p']['products_brand_name']; $row[] = $pdata['p']['products_model'] . ($length > 0 ? '_' . textLength($length, false) : ''); $row[] = $pdata['categories_name']; $row[] = $class_pm->displayProductName($pid); $row[] = ''; //Serie $row[] = ''; //Color Numbers $row[] = implode(', ', $colors); $row[] = implode(',', $materials);
/** * Get cell value for Matahari catalog cell * @global Int $jng_sp_id * @global Array $sp_detail * @param String $column_key * @param Product $product * @param Int $aid * @return String */ function getMatahariCatalogCellValue($column_key, $product, $aid) { global $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'); if ($category_top_id == '1') { if ($product_old_function['pci']['products_clear_image'] != '') { $main_image = substr($product_old_function['pci']['products_clear_image'], 23); } else { $main_image = substr($product_old_function['p']['products_image'], 23); } } else { $main_image = substr($product_old_function['p']['products_image'], 23); } $additional_images = array_values($product_old_function['pei']); $category_id = $product->category_id; $selling_points = $product->getSellingPointsAsArray($lid); switch ($column_key) { case 'Title*': 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); // $value = 'VON LORENZ' . ' ' . // $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); } break; case 'Brand': $value = $sp_values_brand[$product->brand_id]; // $value = 'VON LORENZ'; break; case 'Model': $value = ''; break; case 'Color*': $value = $product->getColors($lid); break; case 'Sale Price (Amount)*': $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 (Amount)*': $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 'SKU*': $value = $product->getSKU($aid); break; case 'Size': //todo: translate ring sizes if ($category_top_id == '1') { if ($category_id == '29') { $value = $product->convertRingSizeToJapaneseSize($product->getLengthOrSizeAsText($aid)); } else { $value = 'One Size'; } } else { $value = $product->getLengthOrSizeAsText($aid); } break; case 'Model Number': $value = $product->getEAN($aid); break; case 'Stock': $value = $product->retrieveStockQuantity($aid); break; case 'Product Line': $value = 'Wanita'; break; case 'Normal Price (Amount)*': $value = $product->getPriceDefault(); break; case 'Normal Price (Currency)*': $value = 'IDR'; break; case 'Main Material': $value = ''; break; case 'Description*': $value = $product->getDescription($lid); break; case 'Youtube URL': $value = ''; break; case 'Highlight 1': $value = $selling_points[0]; break; case 'Highlight 2': $value = $selling_points[1]; break; case 'Highlight 3': $value = $selling_points[2]; break; case 'Highlight 4': $value = $selling_points[3]; break; case 'Highlight 5': $value = $selling_points[4]; break; case 'Highlight 6': $value = ''; break; case 'Highlight 7': $value = ''; break; case 'Highlight 8': $value = ''; break; case 'Highlight 9': $value = ''; break; case 'Highlight 10': $value = ''; break; case 'Highlight 11': $value = ''; break; case 'Highlight 12': $value = ''; break; case 'Insurance option': $value = '1'; break; case 'Handling fee (IDR)': $value = '0'; break; case 'Product Dimension': //Measurements is from Zalora Template $value = $product->displayMeasurement($lid); break; case 'Product Weight': $value = $product->displayWeight($lid); break; case 'Package Dimension (L x W x H cm)': //todo: use dynamic data $value = '40 x 35 x 3 cm'; break; case 'Certification': $value = ''; break; case 'Product Country': $value = ProductAttribute::displayAttributeName($product->id, ProductAttribute::GROUP_ID_ORIGIN, $lid); break; case 'Item Condition*': $value = 'new'; break; case 'Product Waranty': $value = ''; break; case 'Image 1*': //Currently Kristel will copy the link to this field manually. $value = $main_image; break; case 'Image 2': $value = $additional_images[0] == '' ? '' : substr($additional_images[0], 23); break; case 'Image 3': $value = $additional_images[1] == '' ? '' : substr($additional_images[1], 23); break; case 'Image 4': $value = $additional_images[2] == '' ? '' : substr($additional_images[2], 23); break; case 'Image 5': $value = $additional_images[3] == '' ? '' : substr($additional_images[3], 23); break; case 'Product Line': $value = ucfirst($product->getProductGender('1')); break; case 'Price (Currency)*': $value = 'IDR'; break; case 'Type': $value = ''; break; case 'Package Weight (Kg)': $value = 0.4; break; case 'product_id(MUST BE DELETED BEFORE UPLOAD)': $value = $product->id; break; default: $value = ''; } return $value; }
$result = '<div id="box-' . $products_id . '" class="float-left ui-corner-all" style="margin:10px 10px 0 0; padding:10px; border:solid 1px #ccc;">'; if ($p['p'] !== false) { //Get Product Info $product = new Product($products_id); $product_info = "{$product->id}/{$product->code}"; $result .= ' <div class="tac">'; $result .= $product->displayImage(IMAGE_SIZE_THUMBNAIL_2, IMAGE_SIZE_THUMBNAIL_2); $link_product = '<a href="?open=product-detail&hidemenu=true&products_id=' . $products_id . '" class="view_webpage"> ' . $product_info . '</a>'; $result .= ' <br/>' . $link_product; if ($product->isAddedToSalesPartner($spid) || $spid == 'ALL') { $cogs = $product->getProductCOGSValue(); //Get price selling if ($spid == 'ALL') { $price_selling = $product->getPriceDefault(); } else { $price_selling = $product->getPriceSelling($spid); } //Get total sold $total_sold = $not_available_text; if ($spid > 0 || $spid == 'ALL') { $total_sold = $class_jc->getTotalSold($products_id, $spid); } //Get net price per type of sp (B2C or B2B) if (in_array($spid, $sp_b2b_ids)) { $net_price = $price_selling; } else { $net_price = Product::calculateNetPrice($price_selling, VAT); } $profit = Product::calculateProfit($net_price, $cogs); $margin = Product::calculateMargin($profit, $net_price); $result .= ' <br/><br/>Price: ' . displayCurrency('EUR', $price_selling);