Application->recallObject($params['PrefixSpecial']); $price = $object->GetField('Price'); // display selected currency by default if (!isset($params['currency']) || $params['currency'] == 'selected') { $iso = $this->Application->RecallVar('curr_iso'); } elseif ($params['currency'] == 'primary') { $iso = 'USD'; } else { //explicit currency $iso = $params['currency']; } // convert primary currency to selected (if they are the same, converter will just return) /** @var CurrencyRates $converter */ $converter = $this->Application->recallObject('CurrencyRates'); $price = $converter->Convert($price, 'PRIMARY', $iso); $currency = $this->Application->recallObject('curr.-'.$iso, null, Array('skip_autoload' => true)); if( !$currency->isLoaded() ) $currency->Load($iso, 'ISO'); $symbol = $currency->GetDBField('Symbol'); if (!$symbol) $symbol = $currency->GetDBField('ISO'); $formatted = ''; if ($currency->GetDBField('SymbolPosition') == 0) { $formatted .= $symbol; } $formatted .= $price; if ($currency->GetDBField('SymbolPosition') == 1) { $formatted .= $symbol; } return $formatted; } function Product_ListPriceBrackets($params) { return $this->PrintList2($params); } function Field($params) { $field = $this->SelectParam($params, 'name,field'); $value = parent::Field($params); if (($field == 'MaxQty') && ($value == -1)) { $value = '∞'; } return $value; } function Product_HasQuantityPricing($params) { return (int)$this->TotalRecords($params) > 1; } function ShowPricingForm($params) { $br_object = $this->getObject( Array('skip_autoload' => true) ); $br_data = $this->Application->GetVar("pr_tang"); $group_id = $this->Application->getVar('group_id'); if($group_id>0){ $where_group=' AND GroupId = '.$group_id.' '; } if(!$br_data) { $sql = 'SELECT * FROM '.$br_object->TableName.' WHERE ProductId = '.$this->Application->GetVar('p_id').' '.$where_group; $brackets = $this->Conn->Query($sql, 'PriceId'); usort($brackets, 'pr_bracket_comp'); /** @var kDBItem $dummy */ $dummy = $this->Application->recallObject($this->Prefix.'.-dummy', null, array('skip_autoload' => true)); foreach($brackets as $id => $values) { foreach($values as $value_key=>$value_val){ $dummy->SetDBField($value_key, $value_val); $brackets[$id][$value_key] = $dummy->GetField($value_key); } } $br_data=$brackets; $this->Application->SetVar($this->getPrefixSpecial(true), $brackets); } else { usort($br_data , 'pr_bracket_comp'); } $ret = ''; if( is_array($br_data) ) { $block_params=$this->prepareTagParams($params); $block_params['IdField']='PriceId'; $block_params['name'] = $params['block']; $first = true; // this is needed to find next id $br_data_copy=$br_data; foreach($br_data as $id => $values) { foreach($values as $value_key=>$value_val){ $block_params[$value_key] = $value_val; } reset($values); next($br_data_copy); $next_bracket=current($br_data_copy); $block_params['id'] = $values["PriceId"]; $block_params['min'] = ($id == -1) ? ($values['MinQty'] ? $values['MinQty'] : 0) : $values['MinQty']; $block_params['max'] = ($values['MaxQty'] == -1) ? '∞' : $values['MaxQty']; $block_params['next_min_id']=$next_bracket['PriceId']; if ($first) { $block_params['first'] = 1; $first = false; } else { $block_params['first'] = 0; } $ret .= $this->Application->ParseBlock($block_params, 1); } } return $ret; } function AddToCartLink($params) { $value = $this->Field(array('name'=>'PriceId')); //$this->Application->SetVar('p_id', $this->Application->GetVar($this->getPrefixSpecial().'_id')); $this->Application->SetVar('pr_id', $value); return $this->Application->HREF($params['template'], '', Array('pass' => 'm,p,pr,ord', 'ord_event' => 'OnAddToCart')); } }