本文整理汇总了PHP中zen_get_tax_description函数的典型用法代码示例。如果您正苦于以下问题:PHP zen_get_tax_description函数的具体用法?PHP zen_get_tax_description怎么用?PHP zen_get_tax_description使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了zen_get_tax_description函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: calculate_deductions
function calculate_deductions($order_total)
{
global $db, $order, $messageStack;
$od_amount = array();
$deduction = $this->calculate_credit($this->get_order_total());
$od_amount['total'] = $deduction;
switch ($this->calculate_tax) {
case 'None':
$remainder = $order->info['total'] - $od_amount['total'];
$tax_deduct = $order->info['tax'] - $remainder;
// division by 0
if ($order->info['tax'] <= 0) {
$ratio_tax = 0;
} else {
$ratio_tax = $tax_deduct / $order->info['tax'];
}
$tax_deduct = 0;
/*
if ($this->include_tax) {
reset($order->info['tax_groups']);
foreach ($order->info['tax_groups'] as $key=>$value) {
$od_amount['tax_groups'][$key] = $order->info['tax_groups'][$key] * $ratio_tax;
$tax_deduct += $od_amount['tax_groups'][$key];
}
}
*/
$od_amount['tax'] = $tax_deduct;
break;
case 'Standard':
if ($od_amount['total'] >= $order_total) {
$ratio = 1;
} else {
$ratio = $od_amount['total'] / ($order_total - $order->info['tax']);
}
reset($order->info['tax_groups']);
$tax_deduct = 0;
foreach ($order->info['tax_groups'] as $key => $value) {
$od_amount['tax_groups'][$key] = $order->info['tax_groups'][$key] * $ratio;
$tax_deduct += $od_amount['tax_groups'][$key];
}
$od_amount['tax'] = $tax_deduct;
break;
case 'Credit Note':
$od_amount['total'] = $deduction;
$tax_rate = zen_get_tax_rate($this->tax_class);
$od_amount['tax'] = zen_calculate_tax($deduction, $tax_rate);
$tax_description = zen_get_tax_description($this->tax_class);
$od_amount['tax_groups'][$tax_description] = $od_amount['tax'];
break;
default:
}
return $od_amount;
}
示例2: ot_shipping
function ot_shipping()
{
global $order, $currencies;
$this->code = 'ot_shipping';
$this->title = MODULE_ORDER_TOTAL_SHIPPING_TITLE;
$this->description = MODULE_ORDER_TOTAL_SHIPPING_DESCRIPTION;
$this->sort_order = MODULE_ORDER_TOTAL_SHIPPING_SORT_ORDER;
unset($_SESSION['shipping_tax_description']);
$this->output = array();
if (MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING == 'true') {
switch (MODULE_ORDER_TOTAL_SHIPPING_DESTINATION) {
case 'national':
if ($order->delivery['country_id'] == STORE_COUNTRY) {
$pass = true;
}
break;
case 'international':
if ($order->delivery['country_id'] != STORE_COUNTRY) {
$pass = true;
}
break;
case 'both':
$pass = true;
break;
default:
$pass = false;
break;
}
if ($pass == true && $order->info['total'] - $order->info['shipping_cost'] >= MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING_OVER) {
$order->info['shipping_method'] = $this->title;
$order->info['total'] -= $order->info['shipping_cost'];
$order->info['shipping_cost'] = 0;
}
}
$module = isset($_SESSION['shipping']) && isset($_SESSION['shipping']['id']) ? substr($_SESSION['shipping']['id'], 0, strpos($_SESSION['shipping']['id'], '_')) : '';
if (is_object($order) && zen_not_null($order->info['shipping_method'])) {
if ($GLOBALS[$module]->tax_class > 0) {
if (!isset($GLOBALS[$module]->tax_basis)) {
$shipping_tax_basis = STORE_SHIPPING_TAX_BASIS;
} else {
$shipping_tax_basis = $GLOBALS[$module]->tax_basis;
}
if ($shipping_tax_basis == 'Billing') {
$shipping_tax = zen_get_tax_rate($GLOBALS[$module]->tax_class, $order->billing['country']['id'], $order->billing['zone_id']);
$shipping_tax_description = zen_get_tax_description($GLOBALS[$module]->tax_class, $order->billing['country']['id'], $order->billing['zone_id']);
} elseif ($shipping_tax_basis == 'Shipping') {
$shipping_tax = zen_get_tax_rate($GLOBALS[$module]->tax_class, $order->delivery['country']['id'], $order->delivery['zone_id']);
$shipping_tax_description = zen_get_tax_description($GLOBALS[$module]->tax_class, $order->delivery['country']['id'], $order->delivery['zone_id']);
} else {
if (STORE_ZONE == $order->billing['zone_id']) {
$shipping_tax = zen_get_tax_rate($GLOBALS[$module]->tax_class, $order->billing['country']['id'], $order->billing['zone_id']);
$shipping_tax_description = zen_get_tax_description($GLOBALS[$module]->tax_class, $order->billing['country']['id'], $order->billing['zone_id']);
} elseif (STORE_ZONE == $order->delivery['zone_id']) {
$shipping_tax = zen_get_tax_rate($GLOBALS[$module]->tax_class, $order->delivery['country']['id'], $order->delivery['zone_id']);
$shipping_tax_description = zen_get_tax_description($GLOBALS[$module]->tax_class, $order->delivery['country']['id'], $order->delivery['zone_id']);
} else {
$shipping_tax = 0;
}
}
$shipping_tax_amount = zen_calculate_tax($order->info['shipping_cost'], $shipping_tax);
$order->info['shipping_tax'] += $shipping_tax_amount;
$order->info['tax'] += $shipping_tax_amount;
$order->info['tax_groups']["{$shipping_tax_description}"] += zen_calculate_tax($order->info['shipping_cost'], $shipping_tax);
$order->info['total'] += zen_calculate_tax($order->info['shipping_cost'], $shipping_tax);
$_SESSION['shipping_tax_description'] = $shipping_tax_description;
$_SESSION['shipping_tax_amount'] = $shipping_tax_amount;
if (DISPLAY_PRICE_WITH_TAX == 'true') {
$order->info['shipping_cost'] += zen_calculate_tax($order->info['shipping_cost'], $shipping_tax);
}
}
if ($_SESSION['shipping']['id'] == 'free_free') {
$order->info['shipping_method'] = FREE_SHIPPING_TITLE;
$order->info['shipping_cost'] = 0;
}
}
}
示例3: calculate_deductions
function calculate_deductions($order_total)
{
global $db, $order;
$od_amount = array();
if ($order_total == 0) {
return $od_amount;
}
$orderTotal = $this->get_order_total();
$orderTotalTax = $orderTotal['tax'];
$taxGroups = $orderTotal['taxGroups'];
$group_query = $db->Execute("select customers_group_pricing from " . TABLE_CUSTOMERS . " where customers_id = '" . (int) $_SESSION['customer_id'] . "'");
if ($group_query->fields['customers_group_pricing'] != '0') {
$group_discount = $db->Execute("select group_name, group_percentage from " . TABLE_GROUP_PRICING . "\n where group_id = '" . (int) $group_query->fields['customers_group_pricing'] . "'");
$gift_vouchers = $_SESSION['cart']->gv_only();
$discount = ($orderTotal['total'] - $gift_vouchers) * $group_discount->fields['group_percentage'] / 100;
// echo "discout = $discount<br>";
$od_amount['total'] = round($discount, 2);
$ratio = $od_amount['total'] / $order_total;
/**
* when calculating the ratio add some insignificant values to stop divide by zero errors
*/
switch ($this->calculate_tax) {
case 'None':
if ($this->include_tax) {
reset($order->info['tax_groups']);
foreach ($order->info['tax_groups'] as $key => $value) {
$od_amount['tax_groups'][$key] = $order->info['tax_groups'][$key] * $ratio;
}
}
break;
case 'Standard':
if ($od_amount['total'] >= $order_total) {
$ratio = 1;
}
$adjustedTax = $orderTotalTax * $ratio;
if ($order->info['tax'] == 0) {
return $od_amount;
}
$ratioTax = $orderTotalTax != 0 ? $adjustedTax / $orderTotalTax : 0;
reset($order->info['tax_groups']);
$tax_deduct = 0;
foreach ($taxGroups as $key => $value) {
$od_amount['tax_groups'][$key] = $value * $ratioTax;
$tax_deduct += $od_amount['tax_groups'][$key];
}
$od_amount['tax'] = $tax_deduct;
break;
case 'Credit Note':
$tax_rate = zen_get_tax_rate($this->tax_class);
$od_amount['tax'] = zen_calculate_tax($od_amount['total'], $tax_rate);
$tax_description = zen_get_tax_description($this->tax_class);
$od_amount['tax_groups'][$tax_description] = $od_amount['tax'];
break;
}
}
return $od_amount;
}
示例4: process
function process()
{
global $order, $currencies;
if (MODULE_ORDER_TOTAL_LOWORDERFEE_LOW_ORDER_FEE == 'true') {
switch (MODULE_ORDER_TOTAL_LOWORDERFEE_DESTINATION) {
case 'national':
if ($order->delivery['country_id'] == STORE_COUNTRY) {
$pass = true;
}
break;
case 'international':
if ($order->delivery['country_id'] != STORE_COUNTRY) {
$pass = true;
}
break;
case 'both':
$pass = true;
break;
default:
$pass = false;
break;
}
// if ( ($pass == true) && ( ($order->info['total'] - $order->info['shipping_cost']) < MODULE_ORDER_TOTAL_LOWORDERFEE_ORDER_UNDER) ) {
if ($pass == true && $order->info['subtotal'] < MODULE_ORDER_TOTAL_LOWORDERFEE_ORDER_UNDER) {
$charge_it = 'true';
$cart_content_type = $_SESSION['cart']->get_content_type();
$gv_content_only = $_SESSION['cart']->gv_only();
if ($cart_content_type == 'physical' or $cart_content_type == 'mixed') {
$charge_it = 'true';
} else {
// check to see if everything is virtual, if so - skip the low order fee.
if ($cart_content_type == 'virtual' and MODULE_ORDER_TOTAL_LOWORDERFEE_VIRTUAL == 'true') {
$charge_it = 'false';
if ($gv_content_only > 0 and MODULE_ORDER_TOTAL_LOWORDERFEE_GV == 'false') {
$charge_it = 'true';
}
}
if ($gv_content_only > 0 and MODULE_ORDER_TOTAL_LOWORDERFEE_GV == 'true') {
// check to see if everything is gift voucher, if so - skip the low order fee.
$charge_it = 'false';
if ($cart_content_type == 'virtual' and MODULE_ORDER_TOTAL_LOWORDERFEE_VIRTUAL == 'false') {
$charge_it = 'true';
}
}
}
if ($charge_it == 'true') {
$tax_address = zen_get_tax_locations();
$tax = zen_get_tax_rate(MODULE_ORDER_TOTAL_LOWORDERFEE_TAX_CLASS, $tax_address['country_id'], $tax_address['zone_id']);
$tax_description = zen_get_tax_description(MODULE_ORDER_TOTAL_LOWORDERFEE_TAX_CLASS, $tax_address['country_id'], $tax_address['zone_id']);
// calculate from flat fee or percentage
if (substr(MODULE_ORDER_TOTAL_LOWORDERFEE_FEE, -1) == '%') {
$low_order_fee = $order->info['subtotal'] * (MODULE_ORDER_TOTAL_LOWORDERFEE_FEE / 100);
} else {
$low_order_fee = MODULE_ORDER_TOTAL_LOWORDERFEE_FEE;
}
$order->info['tax'] += zen_calculate_tax($low_order_fee, $tax);
$order->info['tax_groups']["{$tax_description}"] += zen_calculate_tax($low_order_fee, $tax);
$order->info['total'] += $low_order_fee + zen_calculate_tax($low_order_fee, $tax);
if (DISPLAY_PRICE_WITH_TAX == 'true') {
$low_order_fee += zen_calculate_tax($low_order_fee, $tax);
}
$this->output[] = array('title' => $this->title . ':', 'text' => $currencies->format($low_order_fee, true, $order->info['currency'], $order->info['currency_value']), 'value' => $low_order_fee);
}
}
}
}
示例5: process
function process()
{
global $order, $currencies;
if (MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING == 'true') {
switch (MODULE_ORDER_TOTAL_SHIPPING_DESTINATION) {
case 'national':
if ($order->delivery['country_id'] == STORE_COUNTRY) {
$pass = true;
}
break;
case 'international':
if ($order->delivery['country_id'] != STORE_COUNTRY) {
$pass = true;
}
break;
case 'both':
$pass = true;
break;
default:
$pass = false;
break;
}
if ($pass == true && $order->info['total'] - $order->info['shipping_cost'] >= MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING_OVER) {
$order->info['shipping_method'] = $this->title;
$order->info['total'] -= $order->info['shipping_cost'];
$order->info['shipping_cost'] = 0;
}
}
$module = substr($_SESSION['shipping']['id'], 0, strpos($_SESSION['shipping']['id'], '_'));
if (zen_not_null($order->info['shipping_method'])) {
if ($GLOBALS[$module]->tax_class > 0) {
if (!defined($GLOBALS[$module]->tax_basis)) {
$shipping_tax_basis = STORE_SHIPPING_TAX_BASIS;
} else {
$shipping_tax_basis = $GLOBALS[$module]->tax_basis;
}
if ($shipping_tax_basis == 'Billing') {
$shipping_tax = zen_get_tax_rate($GLOBALS[$module]->tax_class, $order->billing['country']['id'], $order->billing['zone_id']);
$shipping_tax_description = zen_get_tax_description($GLOBALS[$module]->tax_class, $order->billing['country']['id'], $order->billing['zone_id']);
} elseif ($shipping_tax_basis == 'Shipping') {
$shipping_tax = zen_get_tax_rate($GLOBALS[$module]->tax_class, $order->delivery['country']['id'], $order->delivery['zone_id']);
$shipping_tax_description = zen_get_tax_description($GLOBALS[$module]->tax_class, $order->delivery['country']['id'], $order->delivery['zone_id']);
} else {
if (STORE_ZONE == $order->billing['zone_id']) {
$shipping_tax = zen_get_tax_rate($GLOBALS[$module]->tax_class, $order->billing['country']['id'], $order->billing['zone_id']);
$shipping_tax_description = zen_get_tax_description($GLOBALS[$module]->tax_class, $order->billing['country']['id'], $order->billing['zone_id']);
} elseif (STORE_ZONE == $order->delivery['zone_id']) {
$shipping_tax = zen_get_tax_rate($GLOBALS[$module]->tax_class, $order->delivery['country']['id'], $order->delivery['zone_id']);
$shipping_tax_description = zen_get_tax_description($GLOBALS[$module]->tax_class, $order->delivery['country']['id'], $order->delivery['zone_id']);
} else {
$shipping_tax = 0;
}
}
$order->info['tax'] += zen_calculate_tax($order->info['shipping_cost'], $shipping_tax);
$order->info['tax_groups']["{$shipping_tax_description}"] += zen_calculate_tax($order->info['shipping_cost'], $shipping_tax);
$order->info['total'] += zen_calculate_tax($order->info['shipping_cost'], $shipping_tax);
if (DISPLAY_PRICE_WITH_TAX == 'true') {
$order->info['shipping_cost'] += zen_calculate_tax($order->info['shipping_cost'], $shipping_tax);
}
}
if ($_SESSION['shipping'] == 'free_free') {
$order->info['shipping_method'] = FREE_SHIPPING_TITLE;
}
$this->output[] = array('title' => $order->info['shipping_method'] . ':', 'text' => $currencies->format($order->info['shipping_cost'], true, $order->info['currency'], $order->info['currency_value']), 'value' => $order->info['shipping_cost']);
}
}
示例6: process
function process()
{
global $order, $currencies, $cod_cost, $cod_country, $shipping;
if ($this->enabled == true) {
//Will become true, if cod can be processed.
$cod_country = false;
//check if payment method is cod. If yes, check if cod is possible.
if ($_SESSION['payment'] == 'cod') {
//process installed shipping modules
if (substr_count($_SESSION['shipping']['id'], 'flat') != 0) {
$cod_zones = preg_split("/[:,]/", MODULE_ORDER_TOTAL_COD_FEE_FLAT);
}
if (substr_count($_SESSION['shipping']['id'], 'free') != 0) {
$cod_zones = preg_split("/[:,]/", MODULE_ORDER_TOTAL_COD_FEE_FREE);
}
if (substr_count($_SESSION['shipping']['id'], 'freeshipper') != 0) {
$cod_zones = preg_split("/[:,]/", MODULE_ORDER_TOTAL_COD_FEE_FREESHIPPER);
}
if (substr_count($_SESSION['shipping']['id'], 'freeoptions') != 0) {
$cod_zones = preg_split("/[:,]/", MODULE_ORDER_TOTAL_COD_FEE_FREEOPTIONS);
}
if (substr_count($_SESSION['shipping']['id'], 'item') != 0) {
$cod_zones = preg_split("/[:,]/", MODULE_ORDER_TOTAL_COD_FEE_ITEM);
}
if (substr_count($_SESSION['shipping']['id'], 'perweightunit') != 0) {
$cod_zones = preg_split("/[:,]/", MODULE_ORDER_TOTAL_COD_FEE_PERWEIGHTUNIT);
}
if (substr_count($_SESSION['shipping']['id'], 'table') != 0) {
$cod_zones = preg_split("/[:,]/", MODULE_ORDER_TOTAL_COD_FEE_TABLE);
}
if (substr_count($_SESSION['shipping']['id'], 'ups') != 0) {
$cod_zones = preg_split("/[:,]/", MODULE_ORDER_TOTAL_COD_FEE_UPS);
}
if (substr_count($_SESSION['shipping']['id'], 'usps') != 0) {
$cod_zones = preg_split("/[:,]/", MODULE_ORDER_TOTAL_COD_FEE_USPS);
}
if (substr_count($_SESSION['shipping']['id'], 'fedex') != 0) {
$cod_zones = preg_split("/[:,]/", MODULE_ORDER_TOTAL_COD_FEE_FEDEX);
}
if (substr_count($_SESSION['shipping']['id'], 'zones') != 0) {
$cod_zones = preg_split("/[:,]/", MODULE_ORDER_TOTAL_COD_FEE_ZONES);
}
if (substr_count($_SESSION['shipping']['id'], 'ap') != 0) {
$cod_zones = preg_split("/[:,]/", MODULE_ORDER_TOTAL_COD_FEE_AP);
}
if (substr_count($_SESSION['shipping']['id'], 'dp') != 0) {
$cod_zones = preg_split("/[:,]/", MODULE_ORDER_TOTAL_COD_FEE_DP);
}
//satt inn av Pompel
if (substr_count($_SESSION['shipping']['id'], 'servicepakke') != 0) {
$cod_zones = preg_split("/[:,]/", MODULE_ORDER_TOTAL_COD_FEE_SERVICEPAKKE);
}
for ($i = 0; $i < count($cod_zones); $i++) {
if ($cod_zones[$i] == $order->delivery['country']['iso_code_2']) {
$cod_cost = $cod_zones[$i + 1];
$cod_country = true;
//print('match' . $i . ': ' . $cod_cost);
break;
} elseif ($cod_zones[$i] == '00') {
$cod_cost = $cod_zones[$i + 1];
$cod_country = true;
//print('match' . $i . ': ' . $cod_cost);
break;
} else {
//print('no match');
}
$i++;
}
} else {
//COD selected, but no shipping module which offers COD
}
if ($cod_country) {
$cod_tax_address = zen_get_tax_locations();
$tax = zen_get_tax_rate(MODULE_ORDER_TOTAL_COD_TAX_CLASS, $cod_tax_address['country_id'], $cod_tax_address['zone_id']);
$order->info['total'] += $cod_cost;
if ($tax > 0) {
$tax_description = zen_get_tax_description(MODULE_ORDER_TOTAL_COD_TAX_CLASS, $cod_tax_address['country_id'], $cod_tax_address['zone_id']);
$order->info['tax'] += zen_calculate_tax($cod_cost, $tax);
$order->info['tax_groups'][$tax_description] += zen_calculate_tax($cod_cost, $tax);
$order->info['total'] += zen_calculate_tax($cod_cost, $tax);
if (DISPLAY_PRICE_WITH_TAX == 'true') {
$cod_cost += zen_calculate_tax($cod_cost, $tax);
}
}
$this->output[] = array('title' => $this->title . ':', 'text' => $currencies->format($cod_cost, true, $order->info['currency'], $order->info['currency_value']), 'value' => $cod_cost);
} else {
//Following code should be improved if we can't get the shipping modules disabled, who don't allow COD
// as well as countries who do not have cod
// $this->output[] = array('title' => $this->title . ':',
// 'text' => 'No COD for this module.',
// 'value' => '');
}
}
}
示例7: calculate_deductions
/**
* Enter description here...
*
* @param unknown_type $order_total
* @return unknown
*/
function calculate_deductions($order_total)
{
global $db, $order, $messageStack, $currencies;
$tax_address = zen_get_tax_locations();
$od_amount = array();
$orderTotalDetails = $this->get_order_total();
$orderTotalTax = $orderTotalDetails['tax'];
$orderTotal = $orderTotalDetails['total'];
if ($_SESSION['cc_id']) {
$coupon = $db->Execute("select * from " . TABLE_COUPONS . " where coupon_id = '" . (int) $_SESSION['cc_id'] . "'");
$this->coupon_code = $coupon->fields['coupon_code'];
if ($coupon->RecordCount() > 0 && $orderTotal != 0 || $coupon->RecordCount() > 0 && $coupon->fields['coupon_type'] == 'S') {
// left for total order amount vs qualified order amount just switch the commented lines
// if ($orderTotalDetails['totalFull'] >= $coupon->fields['coupon_minimum_order']) {
if (strval($orderTotalDetails['total']) >= $coupon->fields['coupon_minimum_order']) {
if ($coupon->fields['coupon_type'] == 'S') {
$od_amount['total'] = $_SESSION['shipping']['cost'];
$od_amount['type'] = 'S';
$od_amount['tax'] = $this->calculate_tax == 'Standard' ? $_SESSION['shipping_tax_amount'] : 0;
if (DISPLAY_PRICE_WITH_TAX == 'true') {
$od_amount['total'] += $od_amount['tax'];
}
if (isset($_SESSION['shipping_tax_description']) && $_SESSION['shipping_tax_description'] != '') {
$od_amount['tax_groups'][$_SESSION['shipping_tax_description']] = $od_amount['tax'];
}
return $od_amount;
}
if ($coupon->fields['coupon_type'] == 'P') {
$od_amount['total'] = round($orderTotal * ($coupon->fields['coupon_amount'] / 100), 2);
$od_amount['type'] = 'P';
$ratio = $od_amount['total'] / $orderTotal;
} elseif ($coupon->fields['coupon_type'] == 'F') {
$od_amount['total'] = round($coupon->fields['coupon_amount'] * ($orderTotal > 0), 2);
$od_amount['type'] = 'F';
$ratio = $od_amount['total'] / $orderTotal;
}
if ($od_amount['total'] > $orderTotal) {
$od_amount['total'] = $orderTotal;
}
switch ($this->calculate_tax) {
case 'None':
if ($this->include_tax == 'true') {
reset($order->info['tax_groups']);
foreach ($order->info['tax_groups'] as $key => $value) {
$od_amount['tax_groups'][$key] = $order->info['tax_groups'][$key] * $ratio;
}
}
break;
case 'Standard':
if ($od_amount['total'] >= $orderTotal) {
$ratio = 1;
}
$adjustedTax = $orderTotalTax * $ratio;
// echo "order total tax = $orderTotalTax";
$ratioTax = isset($order->info['tax']) && $order->info['tax'] != 0 ? $adjustedTax / $order->info['tax'] : 0;
reset($order->info['tax_groups']);
$tax_deduct = 0;
foreach ($order->info['tax_groups'] as $key => $value) {
$od_amount['tax_groups'][$key] = $order->info['tax_groups'][$key] * $ratioTax;
$tax_deduct += $od_amount['tax_groups'][$key];
}
$od_amount['tax'] = $tax_deduct;
break;
case 'Credit Note':
$tax_rate = zen_get_tax_rate($this->tax_class);
$od_amount['tax'] = zen_calculate_tax($od_amount['total'], $tax_rate);
$tax_description = zen_get_tax_description($this->tax_class);
$od_amount['tax_groups'][$tax_description] = $od_amount['tax'];
break;
default:
}
} else {
$messageStack->add_session('redemptions', sprintf(TEXT_INVALID_REDEEM_COUPON_MINIMUM, $currencies->format($coupon->fields['coupon_minimum_order'])), 'caution');
$this->clear_posts();
zen_redirect(zen_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL', true, false));
}
}
}
return $od_amount;
}
示例8: calculate_deductions
function calculate_deductions($order_total)
{
global $gBitDb, $gBitCustomer, $order;
$tax_address = zen_get_tax_locations();
$od_amount['total'] = 0;
$od_amount['tax'] = 0;
if ($_SESSION['cc_id']) {
$coupon = new CommerceVoucher($_SESSION['cc_id']);
if ($coupon->load() && $coupon->isRedeemable()) {
if ($coupon->getField('coupon_minimum_order') <= $order_total) {
if ($coupon->getField('coupon_type') == 'S') {
if ($coupon->getField('restrict_to_shipping')) {
$shippingMethods = explode(',', $coupon->getField('restrict_to_shipping'));
if (in_array($order->info['shipping_method_code'], $shippingMethods)) {
$od_amount['total'] = $order->info['shipping_cost'];
}
} else {
$od_amount['total'] = $order->info['shipping_cost'];
}
$od_amount['type'] = 'S';
} else {
if ($coupon->getField('coupon_type') == 'P') {
// Max discount is a sum of percentages of valid products
$totalDiscount = 0;
} else {
$totalDiscount = $coupon->getField('coupon_amount') * ($order_total > 0);
}
$runningDiscount = 0;
$runningDiscountQuantity = 0;
foreach (array_keys($gBitCustomer->mCart->contents) as $productKey) {
$productHash = $gBitCustomer->mCart->getProductHash($productKey);
if ($coupon->getField('quantity_max')) {
if ($discountQuantity = $coupon->getField('quantity_max') - $runningDiscountQuantity) {
if ($discountQuantity > $productHash['products_quantity']) {
$discountQuantity = $productHash['products_quantity'];
}
}
} else {
$discountQuantity = $productHash['products_quantity'];
}
if ($productHash && $discountQuantity && $this->is_product_valid($productHash, $_SESSION['cc_id'])) {
// _P_ercentage discount
if ($coupon->getField('coupon_type') == 'P') {
$runningDiscountQuantity += $discountQuantity;
$itemDiscount = round($productHash['final_price'] * $discountQuantity * ($coupon->getField('coupon_amount') / 100), 2);
$totalDiscount += $itemDiscount;
if ($runningDiscount < $totalDiscount) {
$runningDiscount += $itemDiscount;
}
if ($runningDiscount > $totalDiscount) {
$runningDiscount = $totalDiscount;
$itemDiscount = 0;
}
switch ($this->calculate_tax) {
case 'Credit Note':
$tax_rate = zen_get_tax_rate($this->tax_class, $tax_address['country_id'], $tax_address['zone_id']);
$tax_desc = zen_get_tax_description($this->tax_class, $tax_address['country_id'], $tax_address['zone_id']);
$od_amount[$tax_desc] = $runningDiscount / 100 * $tax_rate;
$od_amount['tax'] += $od_amount[$tax_desc];
break;
case 'Standard':
$ratio = $runningDiscount / $this->get_order_total();
$tax_rate = zen_get_tax_rate($productHash['products_tax_class_id'], $tax_address['country_id'], $tax_address['zone_id']);
$tax_desc = zen_get_tax_description($productHash['products_tax_class_id'], $tax_address['country_id'], $tax_address['zone_id']);
if ($tax_rate > 0) {
if (empty($od_amount[$tax_desc])) {
$od_amount[$tax_desc] = 0;
}
$od_amount[$tax_desc] += $productHash['final_price'] * $discountQuantity * $tax_rate / 100 * $ratio;
$od_amount['tax'] += $od_amount[$tax_desc];
}
break;
}
// _F_ixed discount
} elseif ($coupon->getField('coupon_type') == 'F') {
switch ($this->calculate_tax) {
case 'Credit Note':
$tax_rate = zen_get_tax_rate($this->tax_class, $tax_address['country_id'], $tax_address['zone_id']);
$tax_desc = zen_get_tax_description($this->tax_class, $tax_address['country_id'], $tax_address['zone_id']);
$od_amount[$tax_desc] = $runningDiscount / 100 * $tax_rate;
$od_amount['tax'] += $od_amount[$tax_desc];
break;
case 'Standard':
$ratio = $runningDiscount / $this->get_order_total();
$t_prid = zen_get_prid($productKey);
$cc_result = $gBitDb->query("select `products_tax_class_id` from " . TABLE_PRODUCTS . " where `products_id` = ?", array($t_prid));
if ($this->is_product_valid($productHash, $_SESSION['cc_id'])) {
if ($runningDiscount < $totalDiscount) {
$runningDiscount += $productHash['final_price'] * $discountQuantity;
}
if ($runningDiscount > $totalDiscount) {
$runningDiscount = $totalDiscount;
}
$tax_rate = zen_get_tax_rate($cc_result->fields['products_tax_class_id'], $tax_address['country_id'], $tax_address['zone_id']);
$tax_desc = zen_get_tax_description($cc_result->fields['products_tax_class_id'], $tax_address['country_id'], $tax_address['zone_id']);
if ($tax_rate > 0) {
if (empty($od_amount[$tax_desc])) {
$od_amount[$tax_desc] = 0;
}
$od_amount[$tax_desc] += $productHash['final_price'] * $discountQuantity * $tax_rate / 100 * $ratio;
//.........这里部分代码省略.........
示例9: calculate_deductions
/**
* Enter description here...
*
* @param unknown_type $order_total
* @return unknown
*/
function calculate_deductions($order_total)
{
global $db, $order, $messageStack;
$tax_address = zen_get_tax_locations();
$od_amount = array();
$orderTotal = $this->get_order_total();
$orderTotalTax = $orderTotal['tax'];
if ($_SESSION['cc_id']) {
$coupon = $db->Execute("select * from " . TABLE_COUPONS . " where coupon_id = '" . (int) $_SESSION['cc_id'] . "'");
$this->coupon_code = $coupon->fields['coupon_code'];
if ($coupon->RecordCount() > 0 && $order_total != 0 || $coupon->RecordCount() > 0 && $coupon->fields['coupon_type'] == 'S') {
if ($coupon->fields['coupon_minimum_order'] <= $orderTotal['totalFull']) {
if ($coupon->fields['coupon_type'] == 'S') {
$od_amount['total'] = $_SESSION['shipping']['cost'];
$od_amount['type'] = 'S';
$od_amount['tax'] = $_SESSION['shipping_tax_amount'];
if (isset($_SESSION['shipping_tax_description']) && $_SESSION['shipping_tax_description'] != '') {
$od_amount['tax_groups'][$_SESSION['shipping_tax_description']] = $od_amount['tax'];
}
return $od_amount;
}
if ($coupon->fields['coupon_type'] == 'P') {
$od_amount['total'] = round($order_total * ($coupon->fields['coupon_amount'] / 100), 2);
$od_amount['type'] = 'P';
$ratio = $od_amount['total'] / $order_total;
} elseif ($coupon->fields['coupon_type'] == 'F') {
$od_amount['total'] = $coupon->fields['coupon_amount'] * ($order_total > 0);
$od_amount['type'] = 'F';
$ratio = $od_amount['total'] / $order_total;
}
if ($od_amount['total'] > $order_total) {
$od_amount['total'] = $order_total;
}
switch ($this->calculate_tax) {
case 'None':
if ($this->include_tax) {
reset($order->info['tax_groups']);
foreach ($order->info['tax_groups'] as $key => $value) {
$od_amount['tax_groups'][$key] = $order->info['tax_groups'][$key] * $ratio;
}
}
break;
case 'Standard':
if ($od_amount['total'] >= $order_total) {
$ratio = 1;
}
$adjustedTax = $orderTotalTax * $ratio;
$ratioTax = $adjustedTax / $order->info['tax'];
reset($order->info['tax_groups']);
$tax_deduct = 0;
foreach ($order->info['tax_groups'] as $key => $value) {
$od_amount['tax_groups'][$key] = $order->info['tax_groups'][$key] * $ratioTax;
$tax_deduct += $od_amount['tax_groups'][$key];
}
$od_amount['tax'] = $tax_deduct;
break;
case 'Credit Note':
$tax_rate = zen_get_tax_rate($this->tax_class);
$od_amount['tax'] = zen_calculate_tax($od_amount['total'], $tax_rate);
$tax_description = zen_get_tax_description($this->tax_class);
$od_amount['tax_groups'][$tax_description] = $od_amount['tax'];
break;
default:
}
}
}
}
return $od_amount;
}
示例10: calculate_deductions
function calculate_deductions($order_total)
{
global $db, $order, $messageStack;
$tax_address = zen_get_tax_locations();
$od_amount = array();
if ($_SESSION['cc_id']) {
$coupon = $db->Execute("select * from " . TABLE_COUPONS . " where coupon_id = '" . $_SESSION['cc_id'] . "'");
if ($coupon->RecordCount() > 0 && $order_total != 0 || $coupon->RecordCount() > 0 && $coupon->fields['coupon_type'] == 'S') {
if ($coupon->fields['coupon_minimum_order'] <= $order_total) {
if ($coupon->fields['coupon_type'] == 'S') {
$od_amount['total'] = $order->info['shipping_cost'];
$od_amount['type'] = 'S';
} else {
if ($coupon->fields['coupon_type'] == 'P') {
$od_amount['total'] = zen_round($order_total * ($coupon->fields['coupon_amount'] / 100), 2);
} else {
$od_amount['total'] = $coupon->fields['coupon_amount'] * ($order_total > 0);
}
if ($od_amount['total'] > $order_total) {
$od_amount['total'] = $order_total;
}
$products = $_SESSION['cart']->get_products();
for ($i = 0; $i < sizeof($products); $i++) {
// speed up process and store value
$is_valid_results = is_product_valid($products[$i]['id'], $_SESSION['cc_id']);
if ($is_valid_results) {
if ($coupon->fields['coupon_type'] == 'P') {
switch ($this->calculate_tax) {
case 'Credit Note':
$tax_rate = zen_get_tax_rate($this->tax_class, $tax_address['country_id'], $tax_address['zone_id']);
$tax_desc = zen_get_tax_description($this->tax_class, $tax_address['country_id'], $tax_address['zone_id']);
$od_amount[$tax_desc] = $od_amount['total'] / 100 * $tax_rate;
$od_amount['tax'] += $od_amount[$tax_desc];
break;
case 'Standard':
$ratio = $od_amount['total'] / $this->get_order_total();
$products = $_SESSION['cart']->get_products();
for ($j = 0; $j < sizeof($products); $j++) {
$t_prid = zen_get_prid($products[$j]['id']);
$cc_result = $db->Execute("select products_tax_class_id\n from " . TABLE_PRODUCTS . " where products_id = '" . $t_prid . "'");
if ($is_valid_results) {
$tax_rate = zen_get_tax_rate($cc_result->fields['products_tax_class_id'], $tax_address['country_id'], $tax_address['zone_id']);
$tax_desc = zen_get_tax_description($cc_result->fields['products_tax_class_id'], $tax_address['country_id'], $tax_address['zone_id']);
if ($tax_rate > 0) {
// $od_amount[$tax_desc] += (($products[$j]['final_price'] * $products[$j]['quantity']) * $tax_rate)/100 * $ratio;
$od_amount[$tax_desc] += round(($products[$j]['final_price'] * $products[$j]['quantity'] * $tax_rate + 0.5) / 100 * $ratio, 2);
$od_amount['tax'] += $od_amount[$tax_desc];
}
}
}
break;
default:
}
}
if ($coupon->fields['coupon_type'] == 'F') {
switch ($this->calculate_tax) {
case 'Credit Note':
$tax_rate = zen_get_tax_rate($this->tax_class, $tax_address['country_id'], $tax_address['zone_id']);
$tax_desc = zen_get_tax_description($this->tax_class, $tax_address['country_id'], $tax_address['zone_id']);
$od_amount[$tax_desc] = $od_amount['total'] / 100 * $tax_rate;
$od_amount['tax'] += $od_amount[$tax_desc];
break;
case 'Standard':
$ratio = $od_amount['total'] / $this->get_order_total();
$products = $_SESSION['cart']->get_products();
for ($j = 0; $j < sizeof($products); $j++) {
$t_prid = zen_get_prid($products[$j]['id']);
$cc_result = $db->Execute("select products_tax_class_id\n from " . TABLE_PRODUCTS . " where products_id = '" . $t_prid . "'");
if ($is_valid_results) {
$tax_rate = zen_get_tax_rate($cc_result->fields['products_tax_class_id'], $tax_address['country_id'], $tax_address['zone_id']);
$tax_desc = zen_get_tax_description($cc_result->fields['products_tax_class_id'], $tax_address['country_id'], $tax_address['zone_id']);
if ($tax_rate > 0) {
// $od_amount[$tax_desc] += (($products[$j]['final_price'] * $products[$j]['quantity']) * $tax_rate)/100 * $ratio;
$od_amount[$tax_desc] += round(($products[$j]['final_price'] * $products[$j]['quantity'] * $tax_rate + 0.5) / 100 * $ratio, 2);
$od_amount['tax'] += $od_amount[$tax_desc];
}
}
}
break;
default:
}
}
}
}
}
}
}
}
return $od_amount;
}
示例11: eo_get_product_taxes
function eo_get_product_taxes($product, $shown_price = -1, $add = true)
{
global $db, $currencies, $order;
if (DISPLAY_PRICE_WITH_TAX == 'true') {
$shown_price = (zen_round($product['final_price'], $currencies->get_decimal_places($_SESSION['currency'])) + zen_calculate_tax($product['final_price'], $product['tax'])) * $product['qty'];
$shown_price += zen_round($product['onetime_charges'], $currencies->get_decimal_places($_SESSION['currency'])) + zen_calculate_tax($product['onetime_charges'], $product['tax']);
} else {
$shown_price = $product['final_price'] * $product['qty'];
$shown_price += $product['onetime_charges'];
}
// Not standard Zen Cart - but clears up some math issues later
$shown_price = zen_round($shown_price, $currencies->get_decimal_places($_SESSION['currency']));
if (array_key_exists('tax_description', $product)) {
$products_tax_description = $product['tax_description'];
} else {
$query = $db->Execute('SELECT `products_tax_class_id` ' . 'FROM `' . TABLE_PRODUCTS . '` WHERE `products_id`=\'' . (int) $product['id'] . '\' ');
if (!$query->EOF) {
$products_tax_description = zen_get_tax_description($query->fields['products_tax_class_id']);
} else {
if (array_key_exists('tax', $product)) {
$products_tax_description = TEXT_UNKNOWN_TAX_RATE . ' (' . zen_display_tax_value($product['tax']) . '%)';
}
}
}
$totalTaxAdd = 0;
if (zen_not_null($products_tax_description)) {
$taxAdd = 0;
// Done this way to ensure we calculate
if (DISPLAY_PRICE_WITH_TAX == 'true') {
$taxAdd = $shown_price - $shown_price / ($product['tax'] < 10 ? "1.0" . str_replace('.', '', $product['tax']) : "1." . str_replace('.', '', $product['tax']));
} else {
$taxAdd = zen_calculate_tax($shown_price, $product['tax']);
}
if (isset($order->info['tax_groups'][$products_tax_description])) {
if ($add) {
$order->info['tax_groups'][$products_tax_description] += $taxAdd;
} else {
$order->info['tax_groups'][$products_tax_description] -= $taxAdd;
}
} else {
if ($add) {
$order->info['tax_groups'][$products_tax_description] = $taxAdd;
}
}
$totalTaxAdd += $taxAdd;
unset($taxAdd);
}
return $totalTaxAdd;
}
示例12: calculate_tax_deduction
function calculate_tax_deduction($amount, $od_amount, $method, $finalise = false)
{
global $order;
$tax_address = zen_get_tax_locations();
switch ($method) {
case 'Standard':
$ratio1 = zen_round($od_amount / $amount, 2);
$tod_amount = 0;
reset($order->info['tax_groups']);
while (list($key, $value) = each($order->info['tax_groups'])) {
$tax_rate = zen_get_tax_rate_from_desc($key, $tax_address['country_id'], $tax_address['zone_id']);
$total_net += $tax_rate * $value;
}
if ($od_amount > $total_net) {
$od_amount = $total_net;
}
reset($order->info['tax_groups']);
while (list($key, $value) = each($order->info['tax_groups'])) {
$tax_rate = zen_get_tax_rate_from_desc($key, $tax_address['country_id'], $tax_address['zone_id']);
$net = $tax_rate * $value;
if ($net > 0) {
$god_amount = $value * $ratio1;
$tod_amount += $god_amount;
if ($finalise) {
$order->info['tax_groups'][$key] = $order->info['tax_groups'][$key] - $god_amount;
}
}
}
if ($finalise) {
$order->info['tax'] -= $tod_amount;
}
if ($finalise) {
$order->info['total'] -= $tod_amount;
}
break;
case 'Credit Note':
$tax_rate = zen_get_tax_rate($this->tax_class, $tax_address['country_id'], $tax_address['zone_id']);
$tax_desc = zen_get_tax_description($this->tax_class, $tax_address['country_id'], $tax_address['zone_id']);
$tod_amount = $this->deduction / (100 + $tax_rate) * $tax_rate;
if ($finalise) {
$order->info['tax_groups'][$tax_desc] -= $tod_amount;
}
if ($finalise) {
$order->info['tax'] -= $tod_amount;
}
if ($finalise) {
$order->info['total'] -= $tod_amount;
}
break;
default:
}
return $tod_amount;
}
示例13: get_order_total
function get_order_total($couponCode)
{
global $order;
$orderTaxGroups = $order->info['tax_groups'];
$orderTotalTax = $order->info['tax'];
$orderTotal = $order->info['total'];
// left for total order amount vs qualified order amount just switch the commented lines
$orderTotalFull = $orderTotal;
$products = $_SESSION['cart']->get_products();
for ($i = 0; $i < sizeof($products); $i++) {
if (!is_product_valid($products[$i]['id'], $couponCode)) {
$products_tax = zen_get_tax_rate($products[$i]['tax_class_id']);
$productsTaxAmount = zen_calculate_tax($products[$i]['final_price'], $products_tax) * $products[$i]['quantity'];
$orderTotal -= $products[$i]['final_price'] * $products[$i]['quantity'];
if ($this->include_tax == 'true') {
$orderTotal -= $productsTaxAmount;
}
if (DISPLAY_PRICE_WITH_TAX == 'true') {
$orderTotal -= $productsTaxAmount;
}
$orderTaxGroups[zen_get_tax_description($products[$i]['tax_class_id'])] -= $productsTaxAmount;
$orderTotalTax -= zen_calculate_tax($products[$i]['final_price'], zen_get_tax_rate($products[$i]['tax_class_id'])) * $products[$i]['quantity'];
}
}
if ($this->include_shipping != 'true') {
$orderTotal -= $order->info['shipping_cost'];
if (isset($_SESSION['shipping_tax_description']) && $_SESSION['shipping_tax_description'] != '') {
$orderTaxGroups[$_SESSION['shipping_tax_description']] -= $order->info['shipping_tax'];
$orderTotalTax -= $order->info['shipping_tax'];
}
}
if (DISPLAY_PRICE_WITH_TAX != 'true') {
$orderTotal -= $order->info['tax'];
}
// left for total order amount vs qualified order amount - $orderTotalFull
return array('totalFull' => $orderTotalFull, 'orderTotal' => $orderTotal, 'orderTaxGroups' => $orderTaxGroups, 'orderTax' => $orderTotalTax, 'shipping' => $order->info['shipping_cost'], 'shippingTax' => $order->info['shipping_tax']);
}
示例14: cart
function cart()
{
global $db, $currencies;
$decimals = $currencies->get_decimal_places($_SESSION['currency']);
$this->content_type = $_SESSION['cart']->get_content_type();
/* Dual Pricing start */
$customer_address_query = "select c.customers_firstname, c.customers_lastname, c.customers_telephone, c.customers_whole,\n/* Dual Pricing end */\n c.customers_email_address, ab.entry_company, ab.entry_street_address,\n ab.entry_suburb, ab.entry_postcode, ab.entry_city, ab.entry_zone_id,\n z.zone_name, co.countries_id, co.countries_name,\n co.countries_iso_code_2, co.countries_iso_code_3,\n co.address_format_id, ab.entry_state\n from (" . TABLE_CUSTOMERS . " c, " . TABLE_ADDRESS_BOOK . " ab )\n left join " . TABLE_ZONES . " z on (ab.entry_zone_id = z.zone_id)\n left join " . TABLE_COUNTRIES . " co on (ab.entry_country_id = co.countries_id)\n where c.customers_id = '" . (int) $_SESSION['customer_id'] . "'\n and ab.customers_id = '" . (int) $_SESSION['customer_id'] . "'\n and c.customers_default_address_id = ab.address_book_id";
$customer_address = $db->Execute($customer_address_query);
$shipping_address_query = "select ab.entry_firstname, ab.entry_lastname, ab.entry_company,\n ab.entry_street_address, ab.entry_suburb, ab.entry_postcode,\n ab.entry_city, ab.entry_zone_id, z.zone_name, ab.entry_country_id,\n c.countries_id, c.countries_name, c.countries_iso_code_2,\n c.countries_iso_code_3, c.address_format_id, ab.entry_state\n from " . TABLE_ADDRESS_BOOK . " ab\n left join " . TABLE_ZONES . " z on (ab.entry_zone_id = z.zone_id)\n left join " . TABLE_COUNTRIES . " c on (ab.entry_country_id = c.countries_id)\n where ab.customers_id = '" . (int) $_SESSION['customer_id'] . "'\n and ab.address_book_id = '" . (int) $_SESSION['sendto'] . "'";
$shipping_address = $db->Execute($shipping_address_query);
$billing_address_query = "select ab.entry_firstname, ab.entry_lastname, ab.entry_company,\n ab.entry_street_address, ab.entry_suburb, ab.entry_postcode,\n ab.entry_city, ab.entry_zone_id, z.zone_name, ab.entry_country_id,\n c.countries_id, c.countries_name, c.countries_iso_code_2,\n c.countries_iso_code_3, c.address_format_id, ab.entry_state\n from " . TABLE_ADDRESS_BOOK . " ab\n left join " . TABLE_ZONES . " z on (ab.entry_zone_id = z.zone_id)\n left join " . TABLE_COUNTRIES . " c on (ab.entry_country_id = c.countries_id)\n where ab.customers_id = '" . (int) $_SESSION['customer_id'] . "'\n and ab.address_book_id = '" . (int) $_SESSION['billto'] . "'";
$billing_address = $db->Execute($billing_address_query);
// set default tax calculation for not-logged-in visitors
$taxCountryId = $taxZoneId = 0;
// get tax zone info for logged-in visitors
if (isset($_SESSION['customer_id']) && (int) $_SESSION['customer_id'] > 0) {
$taxCountryId = $taxZoneId = -1;
$tax_address_query = '';
switch (STORE_PRODUCT_TAX_BASIS) {
case 'Shipping':
$tax_address_query = "select ab.entry_country_id, ab.entry_zone_id\n from " . TABLE_ADDRESS_BOOK . " ab\n left join " . TABLE_ZONES . " z on (ab.entry_zone_id = z.zone_id)\n where ab.customers_id = '" . (int) $_SESSION['customer_id'] . "'\n and ab.address_book_id = '" . (int) ($this->content_type == 'virtual' ? $_SESSION['billto'] : $_SESSION['sendto']) . "'";
break;
case 'Billing':
$tax_address_query = "select ab.entry_country_id, ab.entry_zone_id\n from " . TABLE_ADDRESS_BOOK . " ab\n left join " . TABLE_ZONES . " z on (ab.entry_zone_id = z.zone_id)\n where ab.customers_id = '" . (int) $_SESSION['customer_id'] . "'\n and ab.address_book_id = '" . (int) $_SESSION['billto'] . "'";
break;
case 'Store':
if ($billing_address->fields['entry_zone_id'] == STORE_ZONE) {
$tax_address_query = "select ab.entry_country_id, ab.entry_zone_id\n from " . TABLE_ADDRESS_BOOK . " ab\n left join " . TABLE_ZONES . " z on (ab.entry_zone_id = z.zone_id)\n where ab.customers_id = '" . (int) $_SESSION['customer_id'] . "'\n and ab.address_book_id = '" . (int) $_SESSION['billto'] . "'";
} else {
$tax_address_query = "select ab.entry_country_id, ab.entry_zone_id\n from " . TABLE_ADDRESS_BOOK . " ab\n left join " . TABLE_ZONES . " z on (ab.entry_zone_id = z.zone_id)\n where ab.customers_id = '" . (int) $_SESSION['customer_id'] . "'\n and ab.address_book_id = '" . (int) ($this->content_type == 'virtual' ? $_SESSION['billto'] : $_SESSION['sendto']) . "'";
}
}
if ($tax_address_query != '') {
$tax_address = $db->Execute($tax_address_query);
if ($tax_address->recordCount() > 0) {
$taxCountryId = $tax_address->fields['entry_country_id'];
$taxZoneId = $tax_address->fields['entry_zone_id'];
}
}
}
$class =& $_SESSION['payment'];
if (isset($_SESSION['cc_id'])) {
$coupon_code_query = "select coupon_code\n from " . TABLE_COUPONS . "\n where coupon_id = '" . (int) $_SESSION['cc_id'] . "'";
$coupon_code = $db->Execute($coupon_code_query);
}
$this->info = array('order_status' => DEFAULT_ORDERS_STATUS_ID, 'currency' => $_SESSION['currency'], 'currency_value' => $currencies->currencies[$_SESSION['currency']]['value'], 'payment_method' => $GLOBALS[$class]->title, 'payment_module_code' => $GLOBALS[$class]->code, 'coupon_code' => $coupon_code->fields['coupon_code'], 'shipping_method' => isset($_SESSION['shipping']['title']) ? $_SESSION['shipping']['title'] : '', 'shipping_module_code' => isset($_SESSION['shipping']['id']) && strpos($_SESSION['shipping']['id'], '_') > 0 ? $_SESSION['shipping']['id'] : $_SESSION['shipping'], 'shipping_cost' => isset($_SESSION['shipping']['cost']) ? $_SESSION['shipping']['cost'] : 0, 'subtotal' => 0, 'shipping_tax' => 0, 'tax' => 0, 'total' => 0, 'tax_groups' => array(), 'comments' => isset($_SESSION['comments']) ? $_SESSION['comments'] : '', 'ip_address' => $_SESSION['customers_ip_address'] . ' - ' . $_SERVER['REMOTE_ADDR']);
//print_r($GLOBALS[$class]);
//echo $class;
//print_r($GLOBALS);
//echo $_SESSION['payment'];
/*
// this is set above to the module filename it should be set to the module title like Checks/Money Order rather than moneyorder
if (isset(${$_SESSION['payment']}) && is_object(${$_SESSION['payment']})) {
$this->info['payment_method'] = ${$_SESSION['payment']}->title;
}
*/
/*
// bof: move below calculations
if ($this->info['total'] == 0) {
if (DEFAULT_ZERO_BALANCE_ORDERS_STATUS_ID == 0) {
$this->info['order_status'] = DEFAULT_ORDERS_STATUS_ID;
} else {
$this->info['order_status'] = DEFAULT_ZERO_BALANCE_ORDERS_STATUS_ID;
}
}
if (isset($GLOBALS[$class]) && is_object($GLOBALS[$class])) {
if ( isset($GLOBALS[$class]->order_status) && is_numeric($GLOBALS[$class]->order_status) && ($GLOBALS[$class]->order_status > 0) ) {
$this->info['order_status'] = $GLOBALS[$class]->order_status;
}
}
// eof: move below calculations
*/
$this->customer = array('firstname' => $customer_address->fields['customers_firstname'], 'lastname' => $customer_address->fields['customers_lastname'], 'company' => $customer_address->fields['entry_company'], 'street_address' => $customer_address->fields['entry_street_address'], 'suburb' => $customer_address->fields['entry_suburb'], 'city' => $customer_address->fields['entry_city'], 'postcode' => $customer_address->fields['entry_postcode'], 'state' => zen_not_null($customer_address->fields['entry_state']) ? $customer_address->fields['entry_state'] : $customer_address->fields['zone_name'], 'zone_id' => $customer_address->fields['entry_zone_id'], 'country' => array('id' => $customer_address->fields['countries_id'], 'title' => $customer_address->fields['countries_name'], 'iso_code_2' => $customer_address->fields['countries_iso_code_2'], 'iso_code_3' => $customer_address->fields['countries_iso_code_3']), 'format_id' => (int) $customer_address->fields['address_format_id'], 'telephone' => $customer_address->fields['customers_telephone'], 'email_address' => $customer_address->fields['customers_email_address']);
$this->delivery = array('firstname' => $shipping_address->fields['entry_firstname'], 'lastname' => $shipping_address->fields['entry_lastname'], 'company' => $shipping_address->fields['entry_company'], 'street_address' => $shipping_address->fields['entry_street_address'], 'suburb' => $shipping_address->fields['entry_suburb'], 'city' => $shipping_address->fields['entry_city'], 'postcode' => $shipping_address->fields['entry_postcode'], 'state' => zen_not_null($shipping_address->fields['entry_state']) ? $shipping_address->fields['entry_state'] : $shipping_address->fields['zone_name'], 'zone_id' => $shipping_address->fields['entry_zone_id'], 'country' => array('id' => $shipping_address->fields['countries_id'], 'title' => $shipping_address->fields['countries_name'], 'iso_code_2' => $shipping_address->fields['countries_iso_code_2'], 'iso_code_3' => $shipping_address->fields['countries_iso_code_3']), 'country_id' => $shipping_address->fields['entry_country_id'], 'format_id' => (int) $shipping_address->fields['address_format_id']);
$this->billing = array('firstname' => $billing_address->fields['entry_firstname'], 'lastname' => $billing_address->fields['entry_lastname'], 'company' => $billing_address->fields['entry_company'], 'street_address' => $billing_address->fields['entry_street_address'], 'suburb' => $billing_address->fields['entry_suburb'], 'city' => $billing_address->fields['entry_city'], 'postcode' => $billing_address->fields['entry_postcode'], 'state' => zen_not_null($billing_address->fields['entry_state']) ? $billing_address->fields['entry_state'] : $billing_address->fields['zone_name'], 'zone_id' => $billing_address->fields['entry_zone_id'], 'country' => array('id' => $billing_address->fields['countries_id'], 'title' => $billing_address->fields['countries_name'], 'iso_code_2' => $billing_address->fields['countries_iso_code_2'], 'iso_code_3' => $billing_address->fields['countries_iso_code_3']), 'country_id' => $billing_address->fields['entry_country_id'], 'format_id' => (int) $billing_address->fields['address_format_id']);
$index = 0;
$products = $_SESSION['cart']->get_products();
for ($i = 0, $n = sizeof($products); $i < $n; $i++) {
if ($i / 2 == floor($i / 2)) {
$rowClass = "rowEven";
} else {
$rowClass = "rowOdd";
}
$taxRates = zen_get_multiple_tax_rates($products[$i]['tax_class_id'], $taxCountryId, $taxZoneId);
$this->products[$index] = array('qty' => $products[$i]['quantity'], 'name' => $products[$i]['name'], 'model' => $products[$i]['model'], 'tax_groups' => $taxRates, 'tax_description' => zen_get_tax_description($products[$i]['tax_class_id'], $taxCountryId, $taxZoneId), 'price' => $products[$i]['price'], 'final_price' => zen_round($products[$i]['price'] + $_SESSION['cart']->attributes_price($products[$i]['id']), $decimals), 'onetime_charges' => $_SESSION['cart']->attributes_price_onetime_charges($products[$i]['id'], $products[$i]['quantity']), 'weight' => $products[$i]['weight'], 'products_priced_by_attribute' => $products[$i]['products_priced_by_attribute'], 'product_is_free' => $products[$i]['product_is_free'], 'products_discount_type' => $products[$i]['products_discount_type'], 'products_discount_type_from' => $products[$i]['products_discount_type_from'], 'id' => $products[$i]['id'], 'rowClass' => $rowClass);
if (STORE_PRODUCT_TAX_BASIS == 'Shipping' && isset($_SESSION['shipping']['id']) && stristr($_SESSION['shipping']['id'], 'storepickup') == TRUE) {
$taxRates = zen_get_multiple_tax_rates($products[$i]['tax_class_id'], STORE_COUNTRY, STORE_ZONE);
$this->products[$index]['tax'] = zen_get_tax_rate($products[$i]['tax_class_id'], STORE_COUNTRY, STORE_ZONE);
} else {
$taxRates = zen_get_multiple_tax_rates($products[$i]['tax_class_id'], $taxCountryId, $taxZoneId);
$this->products[$index]['tax'] = zen_get_tax_rate($products[$i]['tax_class_id'], $taxCountryId, $taxZoneId);
}
$this->notify('NOTIFY_ORDER_CART_ADD_PRODUCT_LIST', array('index' => $index, 'products' => $products[$i]));
if ($products[$i]['attributes']) {
$subindex = 0;
reset($products[$i]['attributes']);
while (list($option, $value) = each($products[$i]['attributes'])) {
/*
//clr 030714 Determine if attribute is a text attribute and change products array if it is.
if ($value == PRODUCTS_OPTIONS_VALUES_TEXT_ID){
//.........这里部分代码省略.........
示例15: cart
function cart()
{
global $gBitDb, $currencies, $gBitUser, $gBitCustomer;
$this->content_type = $gBitCustomer->mCart->get_content_type();
if ($gBitUser->isRegistered()) {
$customer_address_query = "SELECT ab.`entry_firstname`, ab.`entry_lastname`, ab.`entry_telephone`, c.`customers_id`, c.`customers_email_address`, ab.`entry_company`, ab.`entry_street_address`, ab.`entry_suburb`, 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`, ab.`address_book_id`\n\t\t\t\t\t\t\t\t\t FROM " . TABLE_CUSTOMERS . " c, " . TABLE_ADDRESS_BOOK . " ab\n\t\t\t\t\t\t\t\t\t\t LEFT JOIN " . TABLE_ZONES . " z on (ab.`entry_zone_id` = z.`zone_id`)\n\t\t\t\t\t\t\t\t\t\t LEFT JOIN " . TABLE_COUNTRIES . " co on (ab.`entry_country_id` = co.`countries_id`)\n\t\t\t\t\t\t\t\t\t WHERE c.`customers_id` = ? AND ab.`customers_id` = ? AND c.`customers_default_address_id` = ab.`address_book_id`";
$defaultAddress = $gBitDb->getRow($customer_address_query, array($gBitUser->mUserId, $gBitUser->mUserId));
// default to primary address in case we have ended up here without anything previously selected
$sendToAddressId = !empty($_SESSION['sendto']) ? (int) $_SESSION['sendto'] : (!empty($defaultAddress['address_book_id']) ? $defaultAddress['address_book_id'] : NULL);
if ($sendToAddressId) {
$query = "SELECT ab.*, 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`\n\t\t\t\t\t\t FROM " . TABLE_ADDRESS_BOOK . " ab\n\t\t\t\t\t\t\t LEFT JOIN " . TABLE_ZONES . " z on (ab.`entry_zone_id` = z.`zone_id`)\n\t\t\t\t\t\t\t LEFT JOIN " . TABLE_COUNTRIES . " c on (ab.`entry_country_id` = c.`countries_id`)\n\t\t\t\t\t\t WHERE ab.`customers_id`=? AND ab.`address_book_id`=?";
$shippingAddress = $gBitDb->getRow($query, array($gBitUser->mUserId, $sendToAddressId));
if (!$shippingAddress) {
$shippingAddress = $defaultAddress;
}
}
// default to primary address in case we have ended up here without anything previously selected
$billToAddressId = !empty($_SESSION['billto']) ? (int) $_SESSION['billto'] : (!empty($defaultAddress['address_book_id']) ? $defaultAddress['address_book_id'] : NULL);
if ($billToAddressId) {
$query = "SELECT ab.*, 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`\n\t\t\t\t\t\t\tFROM " . TABLE_ADDRESS_BOOK . " ab\n\t\t\t\t\t\t\tLEFT JOIN " . TABLE_ZONES . " z on (ab.`entry_zone_id` = z.`zone_id`)\n\t\t\t\t\t\t\tLEFT JOIN " . TABLE_COUNTRIES . " c on (ab.`entry_country_id` = c.`countries_id`)\n\t\t\t\t\t\t\tWHERE ab.`customers_id` = ?\tand ab.`address_book_id` = ?";
$billingAddress = $gBitDb->getRow($query, array($gBitUser->mUserId, $billToAddressId));
}
switch (STORE_PRODUCT_TAX_BASIS) {
case 'Shipping':
$taxAddressId = $this->content_type == 'virtual' ? $billToAddressId : $sendToAddressId;
break;
case 'Billing':
$taxAddressId = $billToAddressId;
break;
case 'Store':
if ($billingAddress['entry_zone_id'] == STORE_ZONE) {
$taxAddressId = (int) $billToAddressId;
} else {
$taxAddressId = (int) ($this->content_type == 'virtual' ? $billToAddressId : $sendToAddressId);
}
break;
}
//STORE_PRODUCT_TAX_BASIS
if (!empty($taxAddressId)) {
$tax_address_query = "SELECT ab.entry_country_id, ab.entry_zone_id, ab.`entry_state`\n\t\t\t\t\t\t\t\t\t FROM " . TABLE_ADDRESS_BOOK . " ab\n\t\t\t\t\t\t\t\t\t\tLEFT JOIN " . TABLE_ZONES . " z on (ab.`entry_zone_id` = z.`zone_id`)\n\t\t\t\t\t\t\t\t\t WHERE ab.`customers_id` = ? and ab.`address_book_id` = ?";
$tax_address = $gBitDb->getAssoc($tax_address_query, array($gBitUser->mUserId, $taxAddressId));
}
if (!empty($taxAddress['entry_country_id']) && empty($taxAddress['entry_zone_id'])) {
if ($gBitCustomer->getZoneCount($taxAddress['entry_country_id']) && ($zoneId = $gBitCustomer->getZoneId($taxAddress['entry_state'], $taxAddress['entry_country_id']))) {
$taxAddress['entry_zone_id'] = $zoneId;
}
// maybe we have some newly updated zones and outdated address_book entries
} else {
$taxAddress = $defaultAddress;
}
}
$class =& $_SESSION['payment'];
$coupon_code = NULL;
if (!empty($_SESSION['cc_id'])) {
$coupon_code_query = "SELECT `coupon_code` FROM " . TABLE_COUPONS . " WHERE `coupon_id` = ?";
$coupon_code = $gBitDb->GetOne($coupon_code_query, array((int) $_SESSION['cc_id']));
}
$this->info = array('order_status' => DEFAULT_ORDERS_STATUS_ID, 'currency' => !empty($_SESSION['currency']) ? $_SESSION['currency'] : NULL, 'currency_value' => !empty($_SESSION['currency']) ? $currencies->currencies[$_SESSION['currency']]['currency_value'] : NULL, 'payment_method' => !empty($GLOBALS[$class]) ? $GLOBALS[$class]->title : '', 'payment_module_code' => !empty($GLOBALS[$class]) ? $GLOBALS[$class]->code : '', 'coupon_code' => $coupon_code, 'shipping_method' => !empty($_SESSION['shipping']['title']) ? $_SESSION['shipping']['title'] : '', 'shipping_method_code' => !empty($_SESSION['shipping']['code']) ? $_SESSION['shipping']['code'] : '', 'shipping_module_code' => !empty($_SESSION['shipping']['id']) ? $_SESSION['shipping']['id'] : '', 'shipping_cost' => !empty($_SESSION['shipping']['cost']) ? $_SESSION['shipping']['cost'] : '', 'subtotal' => 0, 'tax' => 0, 'total' => 0, 'tax_groups' => array(), 'comments' => isset($_SESSION['comments']) ? $_SESSION['comments'] : '', 'ip_address' => $_SERVER['REMOTE_ADDR']);
if ($this->info['total'] == 0) {
if (DEFAULT_ZERO_BALANCE_ORDERS_STATUS_ID == 0) {
$this->info['order_status'] = DEFAULT_ORDERS_STATUS_ID;
} else {
$this->info['order_status'] = DEFAULT_ZERO_BALANCE_ORDERS_STATUS_ID;
}
}
if (isset($GLOBALS[$class]) && is_object($GLOBALS[$class])) {
if (isset($GLOBALS[$class]->order_status) && is_numeric($GLOBALS[$class]->order_status) && $GLOBALS[$class]->order_status > 0) {
$this->info['order_status'] = $GLOBALS[$class]->order_status;
}
}
if (!empty($defaultAddress)) {
$this->customer = array('firstname' => $defaultAddress['entry_firstname'], 'lastname' => $defaultAddress['entry_lastname'], 'customers_id' => $defaultAddress['customers_id'], 'user_id' => $defaultAddress['customers_id'], 'company' => $defaultAddress['entry_company'], 'street_address' => $defaultAddress['entry_street_address'], 'suburb' => $defaultAddress['entry_suburb'], 'city' => $defaultAddress['entry_city'], 'postcode' => $defaultAddress['entry_postcode'], 'state' => zen_not_null($defaultAddress['entry_state']) ? $defaultAddress['entry_state'] : $defaultAddress['zone_name'], 'zone_id' => $defaultAddress['entry_zone_id'], 'country' => array('countries_name' => $defaultAddress['countries_name'], 'countries_id' => $defaultAddress['countries_id'], 'countries_iso_code_2' => $defaultAddress['countries_iso_code_2'], 'countries_iso_code_3' => $defaultAddress['countries_iso_code_3']), 'format_id' => $defaultAddress['address_format_id'], 'telephone' => $defaultAddress['entry_telephone'], 'email_address' => $defaultAddress['customers_email_address']);
}
if (!empty($shippingAddress)) {
$this->delivery = array('firstname' => $shippingAddress['entry_firstname'], 'lastname' => $shippingAddress['entry_lastname'], 'company' => $shippingAddress['entry_company'], 'street_address' => $shippingAddress['entry_street_address'], 'suburb' => $shippingAddress['entry_suburb'], 'city' => $shippingAddress['entry_city'], 'postcode' => $shippingAddress['entry_postcode'], 'state' => zen_not_null($shippingAddress['entry_state']) ? $shippingAddress['entry_state'] : $shippingAddress['zone_name'], 'zone_id' => $shippingAddress['entry_zone_id'], 'country' => array('countries_id' => $shippingAddress['countries_id'], 'countries_name' => $shippingAddress['countries_name'], 'countries_iso_code_2' => $shippingAddress['countries_iso_code_2'], 'countries_iso_code_3' => $shippingAddress['countries_iso_code_3']), 'country_id' => $shippingAddress['entry_country_id'], 'telephone' => $shippingAddress['entry_telephone'], 'format_id' => $shippingAddress['address_format_id']);
}
if (!empty($billingAddress)) {
$this->billing = array('firstname' => $billingAddress['entry_firstname'], 'lastname' => $billingAddress['entry_lastname'], 'company' => $billingAddress['entry_company'], 'street_address' => $billingAddress['entry_street_address'], 'suburb' => $billingAddress['entry_suburb'], 'city' => $billingAddress['entry_city'], 'postcode' => $billingAddress['entry_postcode'], 'state' => zen_not_null($billingAddress['entry_state']) ? $billingAddress['entry_state'] : $billingAddress['zone_name'], 'zone_id' => $billingAddress['entry_zone_id'], 'country' => array('countries_id' => $billingAddress['countries_id'], 'countries_name' => $billingAddress['countries_name'], 'countries_iso_code_2' => $billingAddress['countries_iso_code_2'], 'countries_iso_code_3' => $billingAddress['countries_iso_code_3']), 'country_id' => $billingAddress['entry_country_id'], 'telephone' => $billingAddress['entry_telephone'], 'format_id' => $billingAddress['address_format_id']);
}
foreach (array_keys($gBitCustomer->mCart->contents) as $productsKey) {
$this->contents[$productsKey] = $gBitCustomer->mCart->getProductHash($productsKey);
if (!empty($taxAddress)) {
$this->contents[$productsKey]['tax'] = zen_get_tax_rate($this->contents[$productsKey]['tax_class_id'], $taxAddress['countries_id'], $taxAddress['entry_zone_id']);
$this->contents[$productsKey]['tax_description'] = zen_get_tax_description($this->contents[$productsKey]['tax_class_id'], $taxAddress['countries_id'], $taxAddress['entry_zone_id']);
}
if (!empty($this->contents[$productsKey]['attributes'])) {
$attributes = $this->contents[$productsKey]['attributes'];
$this->contents[$productsKey]['attributes'] = array();
$subindex = 0;
foreach ($attributes as $option => $value) {
$optionValues = zen_get_option_value(zen_get_options_id($option), (int) $value);
// Determine if attribute is a text attribute and change products array if it is.
if ($value == PRODUCTS_OPTIONS_VALUES_TEXT_ID) {
$attr_value = $this->contents[$productsKey]['attributes_values'][$option];
} else {
$attr_value = $optionValues['products_options_values_name'];
}
$this->contents[$productsKey]['attributes'][$subindex] = array('option' => $optionValues['products_options_name'], 'value' => $attr_value, 'option_id' => $option, 'value_id' => $value, 'prefix' => $optionValues['price_prefix'], 'price' => $optionValues['options_values_price']);
$subindex++;
}
//.........这里部分代码省略.........