Pagina 1 di 1
Problema con Optional Related Products 4.0
Inviato: 22/10/2007, 12:11
da dr_ock
Ciao a tutti.
Ho istallato sul mio sito la seguente contributions: Optional Related Products 4.0 scaricabile dalla seguente pagina
http://www.oscommerce.com/community/contributions,2293
L'istallazione sembra andata a buon fine infatti dal pannello di controllo posso tranquillametnte associare i prodotti tra loro, andando però nella scheda di un prodotto associato, visualizzo correttamente i prodotti correlati, ma sopra all'immagine mi viene restituito questo errore:
Warning: Missing argument 3 for display_price() in d:\hosting\miodomini.it\wwwroot\public\osc\includes\classes\currencies.php on line 72
dove alla linea 72 della pagina currencies.php ho:
Codice: Seleziona tutto
//TotalB2B start
linea 72 function display_price($products_id, $products_price, $products_tax, $quantity = 1) {
global $customer_id;
$query_price_to_guest = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " WHERE configuration_key = 'ALLOW_GUEST_TO_SEE_PRICES'");
$query_price_to_guest_result = tep_db_fetch_array($query_price_to_guest);
if (($query_price_to_guest_result['configuration_value']=='true') && !(tep_session_is_registered('customer_id'))) {
$query_guest_discount = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " WHERE configuration_key = 'GUEST_DISCOUNT'");
$query_guest_discount_result = tep_db_fetch_array($query_guest_discount);
$customer_discount = $query_guest_discount_result['configuration_value'];
Come posso correggere tale problema??
Grazie infinite, spero di essere stato chiaro con la spiegazione.
Inviato: 29/10/2007, 10:25
da dr_ock
Per favore potete aiutarmi?
Sto aspettando di risolvere questo problema per pubblicare il sito..
Confido in un vostro aiuto.
Ciao e Grazie ancora
Inviato: 29/10/2007, 11:25
da loris_ripa
dr_ock ha scritto:Per favore potete aiutarmi?
Sto aspettando di risolvere questo problema per pubblicare il sito..
Confido in un vostro aiuto.
Ciao e Grazie ancora
Credo tu debba modificare il codice di optional related per adeguarlo alla B2B.
Guardati la funzione display_price() di B2B nelle altre pagine o moduli e integrala con quella presente nel modulo dei prodotti correlati.

Inviato: 29/10/2007, 11:57
da dr_ock
loris_ripa ha scritto:dr_ock ha scritto:Per favore potete aiutarmi?
Sto aspettando di risolvere questo problema per pubblicare il sito..
Confido in un vostro aiuto.
Ciao e Grazie ancora
Credo tu debba modificare il codice di optional related per adeguarlo alla B2B.
Guardati la funzione display_price() di B2B nelle altre pagine o moduli e integrala con quella presente nel modulo dei prodotti correlati.

Ok benissimo!
io ho la pagina optional_related_products.php che si trova all'interno della cartella catalog/include/modules/
Codice: Seleziona tutto
<?php
/*
$Id: optional_related_products.php, ver 1.0 02/05/2007 Exp $
Copyright (c) 2007 Anita Cross (http://www.callofthewildphoto.com/)
Part of Contribution: Optional Related Products Ver 4.0
Based on code from Optional Relate Products, ver 2.0 05/01/2005
Copyright (c) 2004-2005 Daniel Bahna (daniel.bahna@gmail.com)
osCommerce, Open Source E-Commerce Solutions
http://www.oscommerce.com
Released under the GNU General Public License
*/
$orderBy = 'ORDER BY ';
$orderBy .= (RELATED_PRODUCTS_RANDOMIZE)?'rand()':'pop_order_id, pop_id';
$orderBy .= (RELATED_PRODUCTS_MAX_DISP)?' limit ' . RELATED_PRODUCTS_MAX_DISP:'';
$attributes = "
SELECT
pop_products_id_slave,
products_name,
products_model,
products_price,
products_quantity,
products_tax_class_id,
products_image
FROM " .
TABLE_PRODUCTS_RELATED_PRODUCTS . ", " .
TABLE_PRODUCTS_DESCRIPTION . " pa, ".
TABLE_PRODUCTS . " pb
WHERE pop_products_id_slave = pa.products_id
AND pa.products_id = pb.products_id
AND language_id = '" . (int)$languages_id . "'
AND pop_products_id_master = '".$HTTP_GET_VARS['products_id']."'
AND products_status='1' " . $orderBy;
$attribute_query = tep_db_query($attributes);
if (mysql_num_rows($attribute_query)>0) {
$count = 0;
?>
<tr>
<td>
<table class="productlisting" border="0" cellspacing="0" cellpadding="2" width="100%">
<tr>
<td align="center" class="productListing-heading"> <?php echo TEXT_RELATED_PRODUCTS ?> </td>
</tr><tr>
<td align="center" class="productListing-data">
<table border="0" cellspacing="0" cellpadding="2" width="100%" align="center">
<tr>
<?php
while ($attributes_values = tep_db_fetch_array($attribute_query)) {
$products_name_slave = ($attributes_values['products_name']);
$products_model_slave = ($attributes_values['products_model']);
$products_qty_slave = ($attributes_values['products_quantity']);
$products_id_slave = ($attributes_values['pop_products_id_slave']);
if ($new_price = tep_get_products_special_price($products_id_slave)) {
$products_price_slave = $currencies->display_price($new_price, tep_get_tax_rate($attributes_values['products_tax_class_id']));
} else {
$products_price_slave = $currencies->display_price($attributes_values['products_price'], tep_get_tax_rate($attributes_values['products_tax_class_id']));
}
echo '<td class="productListing-data" align="center">' . "\n";
// show thumb image if Enabled
if (RELATED_PRODUCTS_SHOW_THUMBS == 'True') {
echo '<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $products_id_slave) . '">' . "\n"
. tep_image(DIR_WS_IMAGES . $attributes_values['products_image'], $attributes_values['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT, 'hspace="5" vspace="5"').'</a><br>' . "\n";
}
$caption = '';
if (RELATED_PRODUCTS_SHOW_NAME == 'True') {
$caption .= '<p>' . $products_name_slave;
if (RELATED_PRODUCTS_SHOW_MODEL == 'True') {
$caption .= sprintf(RELATED_PRODUCTS_MODEL_COMBO, $products_model_slave);
}
$caption .= '</p>' . "\n";
} elseif (RELATED_PRODUCTS_SHOW_MODEL == 'True') {
$caption .= '<p>' . $products_model_slave . '</p>' . "\n";
}
if (RELATED_PRODUCTS_SHOW_PRICE == 'True') {
$caption .= '<p>' . sprintf(RELATED_PRODUCTS_PRICE_TEXT, $products_price_slave) . '</p>' . "\n";
}
if (RELATED_PRODUCTS_SHOW_QUANTITY == 'True') {
$caption .= '<p>' . sprintf(RELATED_PRODUCTS_QUANTITY_TEXT, $products_qty_slave) . '</p>' . "\n";
}
echo '<a href="'
. tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $products_id_slave) . '">'
. $caption . '</a>' . "\n";
if (RELATED_PRODUCTS_SHOW_BUY_NOW== 'True') {
echo '<a href="'
. tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action'))
. 'action=rp_buy_now&rp_products_id=' . $products_id_slave) . '">'
. tep_image_button('button_rp_buy_now.gif', IMAGE_BUTTON_RP_BUY_NOW) . '</a>';
}
echo '</td>' . "\n";
$count++;
if ((RELATED_PRODUCTS_USE_ROWS == 'True') && ($count%RELATED_PRODUCTS_PER_ROW == 0)) {
echo '</tr><tr>' . "\n";
}
}
?>
</tr></table>
</td>
</tr></table>
</td>
</tr>
<?php
}
?>
E' possibile che deva modificare quest'ultima?
Se si, potreste dirmi come?
Grazie Infinite!!
Dai che ci siamo quasi!!
Inviato: 29/10/2007, 12:23
da loris_ripa
Codice: Seleziona tutto
if ($new_price = tep_get_products_special_price($products_id_slave)) {
$products_price_slave = $currencies->display_price($new_price, tep_get_tax_rate($attributes_values['products_tax_class_id']));
} else {
$products_price_slave = $currencies->display_price($attributes_values['products_price'], tep_get_tax_rate($attributes_values['products_tax_class_id']));
}
Credo che la parte che vada modificata sia questa.
Adesso devi prendere un modulo o una pagina dove è già installata la contributions B2B e vedere il codice.
Poi lo adatti.

Inviato: 29/10/2007, 12:42
da dr_ock
loris_ripa ha scritto:Codice: Seleziona tutto
if ($new_price = tep_get_products_special_price($products_id_slave)) {
$products_price_slave = $currencies->display_price($new_price, tep_get_tax_rate($attributes_values['products_tax_class_id']));
} else {
$products_price_slave = $currencies->display_price($attributes_values['products_price'], tep_get_tax_rate($attributes_values['products_tax_class_id']));
}
Credo che la parte che vada modificata sia questa.
Adesso devi prendere un modulo o una pagina dove è già installata la contributions B2B e vedere il codice.
Poi lo adatti.

Allora, ti posto qui di seguito la pagina currencies.php (quella benedessissima pagina dove mi viene richiamato l'errore:
Warning: Missing argument 3 for display_price() in d:\hosting\miosito.it\wwwroot\public\osc\includes\classes\currencies.php on line 72)
Codice: Seleziona tutto
<?php
/*
$Id: currencies.php,v 1.16 2003/06/05 23:16:46 hpdl Exp $
osCommerce, Open Source E-Commerce Solutions
http://www.oscommerce.com
Copyright (c) 2003 osCommerce
Released under the GNU General Public License
*/
////
// Class to handle currencies
// TABLES: currencies
class currencies {
var $currencies;
// class constructor
function currencies() {
$this->currencies = array();
$currencies_query = tep_db_query("select code, title, symbol_left, symbol_right, decimal_point, thousands_point, decimal_places, value from " . TABLE_CURRENCIES);
while ($currencies = tep_db_fetch_array($currencies_query)) {
$this->currencies[$currencies['code']] = array('title' => $currencies['title'],
'symbol_left' => $currencies['symbol_left'],
'symbol_right' => $currencies['symbol_right'],
'decimal_point' => $currencies['decimal_point'],
'thousands_point' => $currencies['thousands_point'],
'decimal_places' => $currencies['decimal_places'],
'value' => $currencies['value']);
}
}
// class methods
function format($number, $calculate_currency_value = true, $currency_type = '', $currency_value = '') {
global $currency;
if (empty($currency_type)) $currency_type = $currency;
if ($calculate_currency_value == true) {
$rate = (tep_not_null($currency_value)) ? $currency_value : $this->currencies[$currency_type]['value'];
$format_string = $this->currencies[$currency_type]['symbol_left'] . ' '. number_format(tep_round($number * $rate, $this->currencies[$currency_type]['decimal_places']), $this->currencies[$currency_type]['decimal_places'], $this->currencies[$currency_type]['decimal_point'], $this->currencies[$currency_type]['thousands_point']) . ' ' . $this->currencies[$currency_type]['symbol_right'];
// if the selected currency is in the european euro-conversion and the default currency is euro,
// the currency will displayed in the national currency and euro currency
if ( (DEFAULT_CURRENCY == 'EUR') && ($currency_type == 'DEM' || $currency_type == 'BEF' || $currency_type == 'LUF' || $currency_type == 'ESP' || $currency_type == 'FRF' || $currency_type == 'IEP' || $currency_type == 'ITL' || $currency_type == 'NLG' || $currency_type == 'ATS' || $currency_type == 'PTE' || $currency_type == 'FIM' || $currency_type == 'GRD') ) {
$format_string .= ' <small>[' . $this->format($number, true, 'EUR') . ']</small>';
}
} else {
$format_string = $this->currencies[$currency_type]['symbol_left'] . ' ' . number_format(tep_round($number, $this->currencies[$currency_type]['decimal_places']), $this->currencies[$currency_type]['decimal_places'], $this->currencies[$currency_type]['decimal_point'], $this->currencies[$currency_type]['thousands_point']) . ' ' . $this->currencies[$currency_type]['symbol_right'];
}
return $format_string;
}
function is_set($code) {
if (isset($this->currencies[$code]) && tep_not_null($this->currencies[$code])) {
return true;
} else {
return false;
}
}
function get_value($code) {
return $this->currencies[$code]['value'];
}
function get_decimal_places($code) {
return $this->currencies[$code]['decimal_places'];
}
//TotalB2B start
function display_price($products_id, $products_price, $products_tax, $quantity = 1) {
global $customer_id;
$query_price_to_guest = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " WHERE configuration_key = 'ALLOW_GUEST_TO_SEE_PRICES'");
$query_price_to_guest_result = tep_db_fetch_array($query_price_to_guest);
if (($query_price_to_guest_result['configuration_value']=='true') && !(tep_session_is_registered('customer_id'))) {
$query_guest_discount = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " WHERE configuration_key = 'GUEST_DISCOUNT'");
$query_guest_discount_result = tep_db_fetch_array($query_guest_discount);
$customer_discount = $query_guest_discount_result['configuration_value'];
if ($customer_discount >= 0) {
$products_price = $products_price + $products_price * abs($customer_discount) / 100;
} else {
$products_price = $products_price - $products_price * abs($customer_discount) / 100;
}
return $this->format(tep_add_tax($products_price, $products_tax) * $quantity);
} elseif (tep_session_is_registered('customer_id')) {
$query_A = tep_db_query("select m.manudiscount_discount from " . TABLE_MANUDISCOUNT . " m, " . TABLE_PRODUCTS . " p where m.manudiscount_groups_id = 0 and m.manudiscount_customers_id = '" . $customer_id . "' and p.products_id = '" . $products_id . "' and p.manufacturers_id = m.manudiscount_manufacturers_id");
$query_B = tep_db_query("select m.manudiscount_discount from " . TABLE_CUSTOMERS . " c, " . TABLE_MANUDISCOUNT . " m, " . TABLE_PRODUCTS . " p where m.manudiscount_groups_id = c.customers_groups_id and m.manudiscount_customers_id = 0 and c.customers_id = '" . $customer_id . "' and p.products_id = '" . $products_id . "' and p.manufacturers_id = m.manudiscount_manufacturers_id");
$query_C = tep_db_query("select m.manudiscount_discount from " . TABLE_MANUDISCOUNT . " m, " . TABLE_PRODUCTS . " p where m.manudiscount_groups_id = 0 and m.manudiscount_customers_id = 0 and p.products_id = '" . $products_id . "' and p.manufacturers_id = m.manudiscount_manufacturers_id");
if ($query_result = tep_db_fetch_array($query_A)) {
$customer_discount = $query_result['manudiscount_discount'];
} else if ($query_result = tep_db_fetch_array($query_B)) {
$customer_discount = $query_result['manudiscount_discount'];
} else if ($query_result = tep_db_fetch_array($query_C)) {
$customer_discount = $query_result['manudiscount_discount'];
} else {
$query = tep_db_query("select g.customers_groups_discount from " . TABLE_CUSTOMERS_GROUPS . " g inner join " . TABLE_CUSTOMERS . " c on g.customers_groups_id = c.customers_groups_id and c.customers_id = '" . $customer_id . "'");
$query_result = tep_db_fetch_array($query);
$customers_groups_discount = $query_result['customers_groups_discount'];
$query = tep_db_query("select customers_discount from " . TABLE_CUSTOMERS . " where customers_id = '" . $customer_id . "'");
$query_result = tep_db_fetch_array($query);
$customer_discount = $query_result['customers_discount'];
$customer_discount = $customer_discount + $customers_groups_discount;
}
if ($customer_discount >= 0) {
$products_price = $products_price + $products_price * abs($customer_discount) / 100;
} else {
$products_price = $products_price - $products_price * abs($customer_discount) / 100;
}
return $this->format(tep_add_tax($products_price, $products_tax) * $quantity);
} else {
return PRICES_LOGGED_IN_TEXT;
}
}
function display_price_nodiscount($products_price, $products_tax, $quantity = 1) {
global $customer_id;
$query_price_to_guest = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " WHERE configuration_key = 'ALLOW_GUEST_TO_SEE_PRICES'");
$query_price_to_guest_result = tep_db_fetch_array($query_price_to_guest);
if ((($query_price_to_guest_result['configuration_value']=='true') && !(tep_session_is_registered('customer_id'))) || ((tep_session_is_registered('customer_id')))) {
return $this->format(tep_add_tax($products_price, $products_tax) * $quantity);
} else {
return PRICES_LOGGED_IN_TEXT;
}
}
//TotalB2B end
}
?>
Scusami se tichiedo di vedere a te, ma non sono molto pratico di PHP.
Grazie ancora e spero di potermi sdebitare del favore.
Inviato: 29/10/2007, 13:04
da loris_ripa
Neanche io sono pratico di php
Comunque ragionando, in quale altra parte del catalogo funziona B2B?
Forse lì c'è la soluzione.

Inviato: 31/10/2007, 12:26
da dr_ock
loris_ripa ha scritto:Neanche io sono pratico di php
Comunque ragionando, in quale altra parte del catalogo funziona B2B?
Forse lì c'è la soluzione.

Allora... agguantatevi forte alle vostre sedie!!!
Ho trovato la soluzione!!
E non ve la dico!!
ahahahahahah .... sto scherzando!!
Allora per chi volesse istallare tale contribution insieme alla contribution B2B deve seguire tutti i procedimenti che si trovano all'interno della contribution Realated Product 4.
Una volta fatto tutto andate nella pagina optional_related_products.php (catalog/includes/modules/)
e modificate la seguente stringa di codice:
DA:
Codice: Seleziona tutto
<?php
while ($attributes_values = tep_db_fetch_array($attribute_query)) {
$products_name_slave = ($attributes_values['products_name']);
$products_model_slave = ($attributes_values['products_model']);
$products_qty_slave = ($attributes_values['products_quantity']);
$products_id_slave = ($attributes_values['pop_products_id_slave']);
if ($new_price = tep_get_products_special_price($products_id_slave)) {
$products_price_slave = $currencies->display_price($new_price, tep_get_tax_rate($attributes_values['products_tax_class_id']));
} else {
$products_price_slave = $currencies->display_price($attributes_values['products_price'], tep_get_tax_rate($attributes_values['products_tax_class_id']));
}
echo '<td class="productListing-data" align="center">' . "\n";
A:
Codice: Seleziona tutto
<?php
while ($attributes_values = tep_db_fetch_array($attribute_query)) {
$products_name_slave = ($attributes_values['products_name']);
$products_model_slave = ($attributes_values['products_model']);
$products_qty_slave = ($attributes_values['products_quantity']);
$products_id_slave = ($attributes_values['pop_products_id_slave']);
if ($new_price = tep_get_products_special_price($products_id_slave)) {
$products_price_slave = $currencies->display_price($new_price, tep_get_tax_rate($attributes_values['products_tax_class_id']));
} else {
$products_price_slave = $currencies->display_price($attributes_values['products_id'], $attributes_values['products_price'], tep_get_tax_rate($attributes_values['products_tax_class_id']));
}
echo '<td class="productListing-data" align="center">' . "\n";
ED IL GIOCO E' FATTO!!!!
Spero di essere stato di aiuto a qualcuno.
Non vi dico quanto ho faticato a risolvere questo problema visto che non sono nemmeno protico di PHP.
Ciao a tutti e alla prossima