Pagina 1 di 1

Total B2B e Missing argument 3 for display_price()

Inviato: 29/12/2005, 2:22
da Razorblade
Ciao,
premetto che lo stesso identico errore che visualizzo io adesso è già stato riscontrato da altri in passato, ho già letto tutta la discussione a proposito:

viewtopic.php?t=5169&start=0&postdays=0 ... splayprice

Nonstante tutto io non ho capito come è stato possibile risolverlo.
Questo errore è venuto fuori dopo aver installato manualmente la contrib TotalB2B. Ve lo posto tutto per completezza:

Warning: Missing argument 3 for display_price() in c:\programmi\apache group\apache\test\oscommerce\includes\classes\currencies.php on line 72

Questo viene visualizzato sopra ogni prodotto nel BODY delle pagine e nel box novità nella colonna di sinistra. Nessun prodotto escluso.

Qualcuno ha una minima idea di dove ho potuto sbagliare?

E poi esattamente cosa significa l'errore "missing argument" in una funzione? Cos'è un argomento?
Ipotizzo sia qualcosa del genere:

nomefunzione(argomento_1,argomento_2,....,argomento_N)

Spero qualcuno possa aiutarmi.
Grazie.

Re: Total B2B e Missing argument 3 for display_price()

Inviato: 29/12/2005, 13:11
da Bass
Razorblade ha scritto: E poi esattamente cosa significa l'errore "missing argument" in una funzione? Cos'è un argomento?
Ipotizzo sia qualcosa del genere:

nomefunzione(argomento_1,argomento_2,....,argomento_N)
Esatto, la TotalB2B aggiunge un argomento a quella funzione (passano da due a tre), ovviamente non tutte le contribs sono previste per funzionare in questo modo per cui devi adattare la funzione display price caso per caso.
Dai un'occhiata alle chiamate alla display price fatte dalla totalb2b, cosi' ti puoi rendere conto di come intervenire

'iao

Sergio

Inviato: 29/12/2005, 21:37
da Razorblade
Ho risolto!

Ho apportato delle modifiche a 2 files:

- product_info.php
- includes\boxes\whats_new.php



1) La contribution del totalB2B per il file product_info.php ad un certo punto è la seguente:

Codice: Seleziona tutto


if ($new_price = tep_get_products_special_price($product_info['products_id'])) {


      //TotalB2B start
	  $query_special_prices_hide = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " WHERE configuration_key = 'SPECIAL_PRICES_HIDE'");
      $query_special_prices_hide_result = tep_db_fetch_array($query_special_prices_hide); 
      if ($query_special_prices_hide_result['configuration_value'] == 'true') {
	 	$products_price = '<span class="productSpecialPrice">' . $currencies->display_price_nodiscount($new_price, tep_get_tax_rate($product_info['products_tax_class_id'])) . '</span>'; 
	  } else {
	    $products_price = '<s>' . $currencies->display_price($product_info['products_id'], $product_info['products_price'], tep_get_tax_rate($product_info['products_tax_class_id'])) . '</s> <span class="productSpecialPrice">' . $currencies->display_price_nodiscount($new_price, tep_get_tax_rate($product_info['products_tax_class_id'])) . '</span>';
	  }
      //TotalB2B end


    }   else {


      $products_price = $currencies->display_price($product_info['products_price'], tep_get_tax_rate($product_info['products_tax_class_id']));

   }



Eliminando l'ELSE subito all'esterno del codice della totalB2B, il suddetto errore scompare per una gran parte dei prodotti.



2) La contribution del totalB2B per il file whats_new.php ad un certo punto è la seguente:



Codice: Seleziona tutto




	//TotalB2B start
    $random_product['products_price'] = tep_xppp_getproductprice($random_product['products_id']);
    //TotalB2B end



    if (tep_not_null($random_product['specials_new_products_price'])) {




      //TotalB2B start
	  $random_product['specials_new_products_price'] = tep_get_products_special_price($random_product['products_id']);
	  $query_special_prices_hide = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " WHERE configuration_key = 'SPECIAL_PRICES_HIDE'");
      $query_special_prices_hide_result = tep_db_fetch_array($query_special_prices_hide); 
      if ($query_special_prices_hide_result['configuration_value'] == 'true') {
		$whats_new_price .= '<span class="productSpecialPrice">' . $currencies->display_price_nodiscount($random_product['specials_new_products_price'], tep_get_tax_rate($random_product['products_tax_class_id'])) . '</span>';
	  } else {
		$whats_new_price = '<s>' . $currencies->display_price($random_product['products_id'], $random_product['products_price'], tep_get_tax_rate($random_product['products_tax_class_id'])) . '</s><br>';
        $whats_new_price .= '<span class="productSpecialPrice">' . $currencies->display_price_nodiscount($random_product['specials_new_products_price'], tep_get_tax_rate($random_product['products_tax_class_id'])) . '</span>';
	  }
      //TotalB2B end


    }   else {
      $whats_new_price = $currencies->display_price($random_product['products_price'], tep_get_tax_rate($random_product['products_tax_class_id']));

    }






è dinuovo presente l'ELSE subito all'esterno del codice TOTALb2b. Rimuovendolo l'errore ( sempre il solito ) nel box what's new scompare.


Ho causato qualche danno al sistema applicando queste correzioni?
Tutto sembra funzionare correttamente...
Grazie

Inviato: 29/12/2005, 23:07
da Bass
Razorblade ha scritto: Ho causato qualche danno al sistema applicando queste correzioni?
Tutto sembra funzionare correttamente...
Ho paura di si, se non e' un prezzo inserito nella scontistica potrebbe non vederlo.

In questo caso la correzione piu' semplice e' questa (esempio per il whats new), nel ciclo else che hai eliminato aggiungi l'argomento mancante (copi dalle linee della B2B appena sopra)

da:

Codice: Seleziona tutto

}   else {
      $whats_new_price = $currencies->display_price($random_product['products_price'], tep_get_tax_rate($random_product['products_tax_class_id']));

    }
a
$random_product['products_id'],

Codice: Seleziona tutto

 $whats_new_price = $currencies->display_price($random_product['products_id'], $random_product['products_price'], tep_get_tax_rate($random_product['products_tax_class_id']));

    }
Praticamente devi aggiungere il products_id come primo parametro

'iao

Sergio

Inviato: 30/12/2005, 2:45
da Razorblade
Hai perfettamente ragione.
Aggiungendo $random_product['products_id'] come primo argomento il fastidiosissimo errore non risulta.
Cosi' ho anche la certezza di non aver danneggiato il sistema.

Però mi sorge un dubbio....
Perchè l'argomento alla funzione display_price() non è stato aggiunto nella contribution TotalB2B?
Ci troviamo di fronte ad un bug? (o semplicemente una dimenticanza...)

Per curiosità ho provato a scrivere l'errore sul google e di negozi con questo errore ne ho trovati a decine.

Spero che tutto questo sia utile a qualcuno in futuro.
Grazie ancora.
Bye!

Inviato: 30/12/2005, 11:38
da Bass
Razorblade ha scritto: Ci troviamo di fronte ad un bug? (o semplicemente una dimenticanza...)
Anche a me e' sembrato strano, potrebbe essere una dimenticanza di hozone nell'ultima versione (che non ho ancora visto), nella precedente il codice veniva modificato

'iao

Sergio