Проблема с купоном в ZenCart - PullRequest
1 голос
/ 20 июля 2011

Я создаю платежный модуль ZenCart. Я могу пройти через продукты, сведения о доставке, а также стоимость доставки, но купон не пройдет, если не испортить формат валюты.

Если я это сделаю, купон вообще не будет отображаться

 $mCouponCost => $order->info['coupon_cost']  * $order->info['currency_value'];

Если я сделаю это так, он покажет купон, но испортит формат валюты

  $mCouponCost = $order->info['coupon_cost']  -> $order->info['currency_value'];    

Весь код ниже:

  $mCouponCost = $order->info['coupon_cost'] - $order->info['currency_value'];
  if (!empty($mCouponCost)) {
  $j++;
  $process_button_string .= zen_draw_hidden_field('LIDSKU' . $j, 'Coupon') .
                                        zen_draw_hidden_field('LIDDesc' . $j, 'Coupon Cost') .
                            zen_draw_hidden_field('LIDPrice' . $j, number_format($mCouponCost, 2, '.', '')) .
                            zen_draw_hidden_field('LIDQty' . $j, '1') .
                            zen_draw_hidden_field('ShippingRequired' . $j, '1') .
                            zen_draw_hidden_field('IsVoucher' . $j, '0');
 }

Где я иду не так?

1 Ответ

0 голосов
/ 10 августа 2012

Вы опубликовали 3 варианта $ mCouponCost = xxxxxxx

  • Первый использует * для умножения ... что является правильным решением.

  • Второй использует ->, что определенно было бы неправильно, потому что данные не в формате объекта, который -> потребовал бы.

  • Третий, который является частью того, что вы сказали,«весь код», использует - который будет вычитать и определенно не даст правильного результата.

Ваш код требует нескольких вещей, некоторые из которых отсутствуют в вашем посте:

a) объект $ order должен быть объявлен как глобальный внутри функции / метода, который вы используете в

b) вы должны написать свой собственный код для фактического объявления и назначениязначение элемента 'coupon_cost' массива $ order-> info

c) если вы работаете с несколькими валютами, то умножение базовой стоимости на $ order-> info ['currency_value'] будетдать правильный результат для валюты, в которойклиент делает покупки.

Простой тест, чтобы определить, действительно ли ваша проблема связана с строкой кода, которую вы впервые процитировали, состояла бы в том, чтобы просто присвоить

$mCouponCost = $order->info['coupon_cost'];

, т.е.умножение на всех.Это позволит получить полезную информацию о том, какие другие проблемы могут на самом деле вызывать трудности, с которыми вы сталкиваетесь.

...