continuo...
codice:
      $this->content_type = $cart->get_content_type(); 

      $customer_address_query = tep_db_query("select c.customers_firstname, c.customers_lastname, c.customers_telephone, c.customers_email_address, ab.entry_company, ab.entry_street_address, ab.entry_postcode, ab.entry_city, ab.entry_zone_id, z.zone_name, co.countries_id, co.countries_name, co.countries_iso_code_2, co.countries_iso_code_3, co.address_format_id, ab.entry_state from " . TABLE_CUSTOMERS . " c, " . TABLE_ADDRESS_BOOK . " ab left join " . TABLE_ZONES . " z on (ab.entry_zone_id = z.zone_id) left join " . TABLE_COUNTRIES . " co on (ab.entry_country_id = co.countries_id) where c.customers_id = '" . (int)$customer_id . "' and ab.customers_id = '" . (int)$customer_id . "' and c.customers_default_address_id = ab.address_book_id"); 
      $customer_address = tep_db_fetch_array($customer_address_query); 

      $shipping_address_query = tep_db_query("select ab.entry_firstname, ab.entry_lastname, ab.entry_company, ab.entry_street_address, ab.entry_postcode, ab.entry_city, ab.entry_zone_id, z.zone_name, ab.entry_country_id, c.countries_id, c.countries_name, c.countries_iso_code_2, c.countries_iso_code_3, c.address_format_id, ab.entry_state from " . TABLE_ADDRESS_BOOK . " ab left join " . TABLE_ZONES . " z on (ab.entry_zone_id = z.zone_id) left join " . TABLE_COUNTRIES . " c on (ab.entry_country_id = c.countries_id) where ab.customers_id = '" . (int)$customer_id . "' and ab.address_book_id = '" . (int)$sendto . "'"); 
      $shipping_address = tep_db_fetch_array($shipping_address_query); 
      
      $billing_address_query = tep_db_query("select ab.entry_firstname, ab.entry_lastname, ab.entry_company, ab.entry_piva, ab.entry_street_address, ab.entry_postcode, ab.entry_city, ab.entry_zone_id, z.zone_name, ab.entry_country_id, c.countries_id, c.countries_name, c.countries_iso_code_2, c.countries_iso_code_3, c.address_format_id, ab.entry_state from " . TABLE_ADDRESS_BOOK . " ab left join " . TABLE_ZONES . " z on (ab.entry_zone_id = z.zone_id) left join " . TABLE_COUNTRIES . " c on (ab.entry_country_id = c.countries_id) where ab.customers_id = '" . (int)$customer_id . "' and ab.address_book_id = '" . (int)$billto . "'"); 
    
      $billing_address = tep_db_fetch_array($billing_address_query); 

      $tax_address_query = tep_db_query("select ab.entry_country_id, ab.entry_zone_id from " . TABLE_ADDRESS_BOOK . " ab left join " . TABLE_ZONES . " z on (ab.entry_zone_id = z.zone_id) where ab.customers_id = '" . (int)$customer_id . "' and ab.address_book_id = '" . (int)($this->content_type == 'virtual' ? $billto : $sendto) . "'"); 
      $tax_address = tep_db_fetch_array($tax_address_query); 

      $this->info = array('order_status' => DEFAULT_ORDERS_STATUS_ID, 
                          'currency' => $currency, 
                          'currency_value' => $currencies->currencies[$currency]['value'], 
                          'payment_method' => $payment, 
                          'cc_type' => (isset($GLOBALS['cc_type']) ? $GLOBALS['cc_type'] : ''), 
                          'cc_owner' => (isset($GLOBALS['cc_owner']) ? $GLOBALS['cc_owner'] : ''), 
                          'cc_number' => (isset($GLOBALS['cc_number']) ? $GLOBALS['cc_number'] : ''), 
                          'cc_expires' => (isset($GLOBALS['cc_expires']) ? $GLOBALS['cc_expires'] : ''), 
                          'shipping_method' => $shipping['title'], 
                          'shipping_cost' => $shipping['cost'], 
                          'subtotal' => 0, 
                          'tax' => 0, 
                          'tax_groups' => array(), 
                          'comments' => (isset($GLOBALS['comments']) ? $GLOBALS['comments'] : '')); 

      if (isset($GLOBALS[$payment]) && is_object($GLOBALS[$payment])) { 
        $this->info['payment_method'] = $GLOBALS[$payment]->title; 

        if ( isset($GLOBALS[$payment]->order_status) && is_numeric($GLOBALS[$payment]->order_status) && ($GLOBALS[$payment]->order_status > 0) ) { 
          $this->info['order_status'] = $GLOBALS[$payment]->order_status; 
        } 
      } 

      $this->customer = array('firstname' => $customer_address['customers_firstname'], 
                              'lastname' => $customer_address['customers_lastname'], 
                              'company' => $customer_address['entry_company'], 
                              'piva' => $billing_address['entry_piva'], 
                              'street_address' => $customer_address['entry_street_address'], 
                              'city' => $customer_address['entry_city'], 
                              'postcode' => $customer_address['entry_postcode'], 
                              'state' => ((tep_not_null($customer_address['entry_state'])) ? $customer_address['entry_state'] : $customer_address['zone_name']), 
                              'zone_id' => $customer_address['entry_zone_id'], 
                              'country' => array('id' => $customer_address['countries_id'], 'title' => $customer_address['countries_name'], 'iso_code_2' => $customer_address['countries_iso_code_2'], 'iso_code_3' => $customer_address['countries_iso_code_3']), 
                              'format_id' => $customer_address['address_format_id'], 
                              'telephone' => $customer_address['customers_telephone'], 
                              'email_address' => $customer_address['customers_email_address']); 

      $this->delivery = array('firstname' => $shipping_address['entry_firstname'], 
                              'lastname' => $shipping_address['entry_lastname'], 
                              'company' => $shipping_address['entry_company'], 
                              'piva' => $billing_address['entry_piva'], 
                              'street_address' => $shipping_address['entry_street_address'], 
                              'city' => $shipping_address['entry_city'], 
                              'postcode' => $shipping_address['entry_postcode'], 
                              'state' => ((tep_not_null($shipping_address['entry_state'])) ? $shipping_address['entry_state'] : $shipping_address['zone_name']), 
                              'zone_id' => $shipping_address['entry_zone_id'], 
                              'country' => array('id' => $shipping_address['countries_id'], 'title' => $shipping_address['countries_name'], 'iso_code_2' => $shipping_address['countries_iso_code_2'], 'iso_code_3' => $shipping_address['countries_iso_code_3']), 
                              'country_id' => $shipping_address['entry_country_id'], 
                              'format_id' => $shipping_address['address_format_id']); 

      $this->billing = array('firstname' => $billing_address['entry_firstname'], 
                             'lastname' => $billing_address['entry_lastname'], 
                             'company' => $billing_address['entry_company'], 
                             'piva' => $billing_address['entry_piva'], 
                             'street_address' => $billing_address['entry_street_address'], 
                             'city' => $billing_address['entry_city'], 
                             'postcode' => $billing_address['entry_postcode'], 
                             'state' => ((tep_not_null($billing_address['entry_state'])) ? $billing_address['entry_state'] : $billing_address['zone_name']), 
                             'zone_id' => $billing_address['entry_zone_id'], 
                             'country' => array('id' => $billing_address['countries_id'], 'title' => $billing_address['countries_name'], 'iso_code_2' => $billing_address['countries_iso_code_2'], 'iso_code_3' => $billing_address['countries_iso_code_3']), 
                             'country_id' => $billing_address['entry_country_id'], 
                             'format_id' => $billing_address['address_format_id']); 

      $index = 0; 
      $products = $cart->get_products(); 
      for ($i=0, $n=sizeof($products); $i<$n; $i++) { 
        $this->products[$index] = array('qty' => $products[$i]['quantity'], 
                                        'name' => $products[$i]['name'], 
                                        'model' => $products[$i]['model'], 
                                        'tax' => tep_get_tax_rate($products[$i]['tax_class_id'], $tax_address['entry_country_id'], $tax_address['entry_zone_id']), 
                                        'tax_description' => tep_get_tax_description($products[$i]['tax_class_id'], $tax_address['entry_country_id'], $tax_address['entry_zone_id']), 
                                        'price' => $products[$i]['price'], 
                                        'final_price' => $products[$i]['price'] + $cart->attributes_price($products[$i]['id']), 
                                        'weight' => $products[$i]['weight'], 
                                        'id' => $products[$i]['id']); 

        if ($products[$i]['attributes']) { 
          $subindex = 0; 
          reset($products[$i]['attributes']); 
          while (list($option, $value) = each($products[$i]['attributes'])) { 
            $attributes_query = tep_db_query("select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa where pa.products_id = '" . (int)$products[$i]['id'] . "' and pa.options_id = '" . (int)$option . "' and pa.options_id = popt.products_options_id and pa.options_values_id = '" . (int)$value . "' and pa.options_values_id = poval.products_options_values_id and popt.language_id = '" . (int)$languages_id . "' and poval.language_id = '" . (int)$languages_id . "'"); 
            $attributes = tep_db_fetch_array($attributes_query); 

            $this->products[$index]['attributes'][$subindex] = array('option' => $attributes['products_options_name'], 
                                                                     'value' => $attributes['products_options_values_name'], 
                                                                     'option_id' => $option, 
                                                                     'value_id' => $value, 
                                                                     'prefix' => $attributes['price_prefix'], 
                                                                     'price' => $attributes['options_values_price']); 

            $subindex++; 
          } 
        } 

        $shown_price = tep_add_tax($this->products[$index]['final_price'], $this->products[$index]['tax']) * $this->products[$index]['qty']; 
        $this->info['subtotal'] += $shown_price; 

        $products_tax = $this->products[$index]['tax']; 
        $products_tax_description = $this->products[$index]['tax_description']; 
        if (DISPLAY_PRICE_WITH_TAX == 'true') { 
          $this->info['tax'] += $shown_price - ($shown_price / (($products_tax < 10) ? "1.0" . str_replace('.', '', $products_tax) : "1." . str_replace('.', '', $products_tax))); 
          if (isset($this->info['tax_groups']["$products_tax_description"])) { 
            $this->info['tax_groups']["$products_tax_description"] += $shown_price - ($shown_price / (($products_tax < 10) ? "1.0" . str_replace('.', '', $products_tax) : "1." . str_replace('.', '', $products_tax))); 
          } else { 
            $this->info['tax_groups']["$products_tax_description"] = $shown_price - ($shown_price / (($products_tax < 10) ? "1.0" . str_replace('.', '', $products_tax) : "1." . str_replace('.', '', $products_tax))); 
          } 
        } else { 
          $this->info['tax'] += ($products_tax / 100) * $shown_price; 
          if (isset($this->info['tax_groups']["$products_tax_description"])) { 
            $this->info['tax_groups']["$products_tax_description"] += ($products_tax / 100) * $shown_price; 
          } else { 
            $this->info['tax_groups']["$products_tax_description"] = ($products_tax / 100) * $shown_price; 
          } 
        } 

        $index++; 
      } 

      if (DISPLAY_PRICE_WITH_TAX == 'true') { 
        $this->info['total'] = $this->info['subtotal'] + $this->info['shipping_cost']; 
      } else { 
        $this->info['total'] = $this->info['subtotal'] + $this->info['tax'] + $this->info['shipping_cost']; 
      } 
    } 
  } 
?>