241 |
241 |
$restrictToCategoriesIds = $this->parseIdList($couponDetails['restrict_to_categories']);
|
242 |
242 |
if (!empty($restrictToProductIds || !empty($restrictToCategoriesIds))) {
|
243 |
243 |
$restrictedProductTotal = 0.0;
|
244 |
|
for ($i = 0, $iMax = sizeof($order->products); $i < $iMax; $i++) {
|
|
244 |
foreach($order->products as $orderProduct) {
|
245 |
245 |
if (!empty($restrictToProductIds)) {
|
246 |
246 |
foreach ($restrictToProductIds as $productId) {
|
247 |
|
if ((int)$productId === (int)xtc_get_prid($order->products[$i]['id'])) {
|
|
247 |
if ((int)$productId === (int)xtc_get_prid($orderProduct['id'])) {
|
248 |
248 |
if ($couponDetails['coupon_type'] === 'P') {
|
249 |
|
$pr_c = $this->product_price($order->products[$i]['id']);
|
|
249 |
$pr_c = $this->product_price($orderProduct['id']);
|
250 |
250 |
$pod_amount = round($pr_c * 100) / 100 * $c_deduct / 100;
|
251 |
251 |
$od_amount += $pod_amount;
|
252 |
252 |
} else {
|
253 |
|
$restrictedProductTotal += $this->product_price($order->products[$i]['id']);
|
|
253 |
$restrictedProductTotal += $this->product_price($orderProduct['id']);
|
254 |
254 |
if ($restrictedProductTotal < $c_deduct) {
|
255 |
255 |
$od_amount = $restrictedProductTotal;
|
256 |
256 |
} else {
|
... | ... | |
260 |
260 |
}
|
261 |
261 |
}
|
262 |
262 |
} else {
|
263 |
|
foreach($order->products as $orderProduct) {
|
264 |
|
$productsId = xtc_get_prid($orderProduct['id']);
|
265 |
|
$productCategories = $this->getProductCategoriesIds(new IdType((int)$productsId));
|
266 |
|
$categoriesIntersect = array_intersect($productCategories, $restrictToCategoriesIds);
|
267 |
|
if (!empty($categoriesIntersect)) {
|
268 |
|
if ($couponDetails['coupon_type'] === 'P') {
|
269 |
|
$pr_c = $this->product_price($orderProduct['id']);
|
270 |
|
$pod_amount = round($pr_c * 10) / 10 * $c_deduct / 100;
|
271 |
|
$od_amount += $pod_amount;
|
272 |
|
} else {
|
273 |
|
$restrictedProductTotal += $this->product_price($orderProduct['id']);
|
274 |
|
|
275 |
|
if ($restrictedProductTotal < $c_deduct) {
|
276 |
|
$od_amount = $restrictedProductTotal;
|
277 |
|
} else {
|
278 |
|
$od_amount = $c_deduct;
|
279 |
|
}
|
|
263 |
$productsId = xtc_get_prid($orderProduct['id']);
|
|
264 |
$productCategories = $this->getProductCategoriesIds(new IdType((int)$productsId));
|
|
265 |
$categoriesIntersect = array_intersect($productCategories, $restrictToCategoriesIds);
|
|
266 |
if (!empty($categoriesIntersect)) {
|
|
267 |
if ($couponDetails['coupon_type'] === 'P') {
|
|
268 |
$pr_c = $this->product_price($orderProduct['id']);
|
|
269 |
$pod_amount = round($pr_c * 10) / 10 * $c_deduct / 100;
|
|
270 |
$od_amount += $pod_amount;
|
|
271 |
} else {
|
|
272 |
$restrictedProductTotal += $this->product_price($orderProduct['id']);
|
|
273 |
|
|
274 |
if ($restrictedProductTotal < $c_deduct) {
|
|
275 |
$od_amount = $restrictedProductTotal;
|
|
276 |
} else {
|
|
277 |
$od_amount = $c_deduct;
|
280 |
278 |
}
|
281 |
279 |
}
|
282 |
280 |
}
|
... | ... | |
535 |
533 |
|
536 |
534 |
$t_gm_reduce_tax = $t_gm_original_tax_value - $t_gm_reduced_price_tax;
|
537 |
535 |
} else {
|
538 |
|
$t_gm_net_discount_ratio = (($t_gm_od_amount * $t_gm_ratio) / (100 + $tax_rate)
|
539 |
|
* 100);
|
|
536 |
$t_gm_net_discount_ratio = $t_gm_od_amount * $t_gm_ratio;
|
540 |
537 |
$t_gm_reduced_price = $valid_array[$p]['products_price']
|
541 |
538 |
- $t_gm_net_discount_ratio;
|
542 |
539 |
$t_gm_reduced_price_tax = $t_gm_reduced_price * ($tax_rate / 100);
|