Problema con Optional Related Products 4.0

Questo forum è dedicato alle discussioni riguardanti le contribution per osCommerce

Moderatore: mod Generali

Rispondi
dr_ock
membro Regular
membro Regular
Messaggi: 124
Iscritto il: 04/04/2005, 0:00
Località: ita

Problema con Optional Related Products 4.0

Messaggio 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.
Dr.Ock
dr_ock
membro Regular
membro Regular
Messaggi: 124
Iscritto il: 04/04/2005, 0:00
Località: ita

Messaggio 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
Dr.Ock
loris_ripa
membro Veteran
membro Veteran
Messaggi: 937
Iscritto il: 21/03/2004, 1:00
Località: Italia
Contatta:

Messaggio 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.
:D
dr_ock
membro Regular
membro Regular
Messaggi: 124
Iscritto il: 04/04/2005, 0:00
Località: ita

Messaggio 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.
:D
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!!
Dr.Ock
loris_ripa
membro Veteran
membro Veteran
Messaggi: 937
Iscritto il: 21/03/2004, 1:00
Località: Italia
Contatta:

Messaggio 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.
:D
dr_ock
membro Regular
membro Regular
Messaggi: 124
Iscritto il: 04/04/2005, 0:00
Località: ita

Messaggio 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.
:D
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.
Dr.Ock
loris_ripa
membro Veteran
membro Veteran
Messaggi: 937
Iscritto il: 21/03/2004, 1:00
Località: Italia
Contatta:

Messaggio da loris_ripa »

Neanche io sono pratico di php :D :D :D
Comunque ragionando, in quale altra parte del catalogo funziona B2B?
Forse lì c'è la soluzione.
:D
dr_ock
membro Regular
membro Regular
Messaggi: 124
Iscritto il: 04/04/2005, 0:00
Località: ita

Messaggio da dr_ock »

loris_ripa ha scritto:Neanche io sono pratico di php :D :D :D
Comunque ragionando, in quale altra parte del catalogo funziona B2B?
Forse lì c'è la soluzione.
:D
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
Dr.Ock
Rispondi