Aiuto su funzioni e variabili

Postate qui discussioni di carattere generale riguardo a problemi di installazione e configurazione di osCommerce

Moderatore: mod Generali

Rispondi
phobos
membro Regular
membro Regular
Messaggi: 134
Iscritto il: 16/01/2004, 1:00
Località: ITA
Contatta:

Aiuto su funzioni e variabili

Messaggio da phobos »

Ciao a tutti, allora, per me questo è un problema insormontabile, evidentemente sbaglio ma non riesco a trovare la giusta strada, e nonostante abbia rotto tante volte le scatole a hozone, non sono ancora riuscito nel mio intento. Spero di riuscire a spiegarmi bene, e spero altrettanto che i bravi di php mi diano una mano.

Allora premetto che utilizzo la totalb2b di hozone la cui funzione finale che calcola il prezzo di un prodotto è:

Codice: Seleziona tutto

  function tep_xppp_getproductprice($products_id) {
    global $customer_id;
    $customer_query = tep_db_query("select g.customers_groups_price 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 . "'");
    $customer_query_result = tep_db_fetch_array($customer_query);
    $customer_price = $customer_query_result['customers_groups_price'];
	$products_price_list_b2b = tep_xppp_getpricelist("");
    $product_info_query = tep_db_query("select products_id, " . $products_price_list_b2b . "  from " . TABLE_PRODUCTS . " where products_id = '" . $products_id . "'");
    $product_info = tep_db_fetch_array($product_info_query);
    if ($product_info['products_price_' . $customer_price] == NULL) {
        $product_info['products_price_' . $customer_price] = $product_info['products_price'];
    }
    if ((int)$customer_price != 1) {
       $product_info['products_price'] = $product_info['products_price_' . $customer_price];
    }
	return $product_info['products_price'];
  }
Ora io ho la necessità che delle altre funzioni utilizzino come prezzo di riferimento, non quello presente nel database, ma quello che questa funzione restituisce, cioè calcolato tenendo conto del b2b.

Vi riporto uno stalcio di una funzione con una prova mia che evidenzierò in rosso:
function tep_get_products_display_price($products_id, $prefix_tag=false, $value_price_only=false, $include_units=true) {
global $currencies, $customer_id;
$product_check_query = tep_db_query("select products_id, products_price, products_tax_class_id, products_priced_by_attribute, product_is_free, product_is_call, product_is_showroom_only from " . TABLE_PRODUCTS . " where products_id = '" . $products_id . "'" . " limit 1");
$product_check = tep_db_fetch_array($product_check_query);

$product_check['products_price'] = tep_xppp_getproductprice($product_check['products_id']);
$display_price='';
$value_price=0;
// Price is either normal or priced by attributes
if ($product_check['products_priced_by_attribute']) {
$attributes_priced=tep_get_products_base_price($products_id, $include_units);
$display_price=$currencies->display_price( ($product_check['products_price'] + $attributes_priced), tep_get_tax_rate($product_check['products_tax_class_id']), '1');
$value_price=($product_check['products_price'] + $attributes_priced);
} else {
if ($product_check['products_price'] !=0) {
$display_price=$currencies->display_price($product_check['products_id'], $product_check['products_price'], tep_get_tax_rate($product_check['products_tax_class_id']), '1');
}
}
Ora io in pratica vorrei che il $product_check['products_price'] sia quello derivante dai calcoli della b2b di hozone. Io ho provato (in rosso) ma con scarsi risultati, come posso fare ciò?

Grazie in anticipo, jo.
<a href="http://www.k-com.it">K-com Forum</a>
<a href="http://www.k-com.it/catalog">K-com Catalogo</a>
<a href="http://www.k-com.it/catalog/admin">K-com Amministrazione</a>
<a href="http://www.k-com.it/forum/index.php?showtopic=17">K-com Contrib</a>
BluEdoG
membro Master
membro Master
Messaggi: 1064
Iscritto il: 25/05/2003, 0:00
Località: italia
Contatta:

Messaggio da BluEdoG »

Codice: Seleziona tutto

$priceb2b = tep_xppp_getproductprice($product_check['products_id']); 
$product_check['products_price'] = $priceb2b;
pero' andrebbe messo all'interno di una sequenza if, altrimenti si incasina tutto.
saluti, Caneblu
[ www.caneblu.com ]
phobos
membro Regular
membro Regular
Messaggi: 134
Iscritto il: 16/01/2004, 1:00
Località: ITA
Contatta:

Messaggio da phobos »

Bhè potrei aggiungere un ciclo di if per verificare se l'user ha assegnato uno sconto o è in un gruppo e poi applicare questa variante, ma $product_check['products_price'] = $priceb2b; lo devo inserire ogni qualvolta che nella funzione incontro $product_check['products_price'] oppure faccio un ciclo di if ogni volta che è richiamato $product_check['products_price']?
<a href="http://www.k-com.it">K-com Forum</a>
<a href="http://www.k-com.it/catalog">K-com Catalogo</a>
<a href="http://www.k-com.it/catalog/admin">K-com Amministrazione</a>
<a href="http://www.k-com.it/forum/index.php?showtopic=17">K-com Contrib</a>
BluEdoG
membro Master
membro Master
Messaggi: 1064
Iscritto il: 25/05/2003, 0:00
Località: italia
Contatta:

Messaggio da BluEdoG »

beh no alla fine del ciclo if, oppure rimodifichi tutte le variabili finali dle prezzo (tanto sono due o tre mi pare), anche perchè con le variabili associative tipo $product_check['products_price'] io spesso ho avuto piccole rogne, meglio se sono variabili liscie tipo $product_price_final
saluti, Caneblu
[ www.caneblu.com ]
Rispondi