/** * @brief discount items */ function discountItems(&$item_list, $group_list = array(), $width = 50, $height = 50) { $oNcartModel =& getModel('ncart'); $config = $oNcartModel->getModuleConfig(); $ret_obj->total_price = 0; $ret_obj->sum_price = 0; $ret_obj->delivery_fee = 0; $ret_obj->total_discounted_price = 0; $ret_obj->total_discount_amount = 0; $ret_obj->taxation_amount = 0; $ret_obj->supply_amount = 0; $ret_obj->taxfree_amount = 0; $ret_obj->vat = 0; $free_delivery = 'N'; if (!$group_list) { $group_list = array(); } $proc_modules = array(); foreach ($item_list as $key => $val) { if (!in_array($val->module, $proc_modules)) { $proc_modules[] = $val->module; } $item = new nproductItem($val, $config->currency, $config->as_sign, $config->decimals); $item->thumbnail_url = $item->getThumbnail($width, $height); $item_list[$key] = $item; $output = $this->discountItem($val, $group_list); $item_list[$key]->discounted_price = $output->discounted_price; $item_list[$key]->discount_amount = $output->discount_amount; $item_list[$key]->discount_info = $output->discount_info; $item_list[$key]->sum_discount_amount = $output->discount_amount * $val->quantity; $item_list[$key]->sum_discounted_price = $output->discounted_price * $val->quantity; $item_list[$key]->sum_price = $val->price * $val->quantity; // option $option = FALSE; if ($val->option_srl) { $options = $this->getOptions($val->item_srl); if (isset($options[$val->option_srl])) { $option = $options[$val->option_srl]; } } if ($option) { // 단가 $item_list[$key]->price = $val->price + $option->price; // 할인가 합계 $item_list[$key]->sum_discounted_price += $option->price * $val->quantity; // 판매가(원가격) $item_list[$key]->sum_price += $option->price * $val->quantity; } $ret_obj->total_discounted_price += $item_list[$key]->sum_discounted_price; $ret_obj->total_discount_amount += $item_list[$key]->sum_discount_amount; $ret_obj->sum_price += $item_list[$key]->sum_price; //$ret_obj->sum_price += ($val->price * $val->quantity); // add currency strings $item_list[$key]->currency_price = $item->printPrice($item_list[$key]->price); $item_list[$key]->currency_discounted_price = $item->printPrice($item_list[$key]->sum_discounted_price); // 과세,비과세 if ($val->taxfree == 'Y') { $ret_obj->taxfree_amount += $item_list[$key]->sum_discounted_price; } else { $ret_obj->taxation_amount += $item_list[$key]->sum_discounted_price; } // item_delivery_free 에 값이 있으면 배송비 무료 $output = $this->getItemExtraVarValue($val->item_srl, 'item_delivery_free'); if ($output) { $free_delivery = 'Y'; } } if (in_array('nstore', $proc_modules)) { if (!$config->freedeliv_amount || $ret_obj->total_discounted_price < $config->freedeliv_amount) { $ret_obj->delivery_fee = $config->delivery_fee; } } if (!$ret_obj->delivery_fee) { $ret_obj->delivery_fee = 0; } if ($free_delivery == 'Y') { $ret_obj->delivery_fee = 0; } $ret_obj->total_price = $ret_obj->total_discounted_price + $ret_obj->delivery_fee; $ret_obj->supply_amount = round($ret_obj->taxation_amount / 1.1); $ret_obj->vat = $ret_obj->taxation_amount - $ret_obj->supply_amount; $ret_obj->item_list = $item_list; return $ret_obj; }
function processCartReview(&$args) { $oNstore_digitalModel =& getModel('nstore_digital'); $oModuleModel =& getModel('module'); $oMemberModel =& getModel('member'); if (!$args->order_srl) { return; } $logged_info = Context::get('logged_info'); if (!$logged_info) { return new Object(-1, 'msg_login_required'); } $cart = $args->cart; $item_count = count($cart->item_list); if (!$item_count) { return new Object(-1, 'No items to order'); } // calculate total price $max_unit_price = -1; $title = ''; foreach ($cart->item_list as $key => $val) { $sum = $val->price * $val->quantity; if ($val->price > $max_unit_price) { $max_unit_price = $val->price; $title = $val->item_name; } } if ($item_count > 1) { $title = $title . ' 외 ' . ($item_count - 1); } // delivery fee if ($args->delivfee_inadvance == 'N') { $cart->total_price -= $cart->delivery_fee; $cart->delivery_fee = 0; } /* // use mileage if ($args->use_mileage) { $cart->total_price = $cart->total_price - (int)$args->use_mileage; } // calculate mileage $args->mileage = 0; $config = $oNstore_digitalModel->getModuleConfig(); if ($config->mileage_percent) { $args->mileage = round($cart->total_price * ((float)$config->mileage_percent/100), -1); } */ // generate order id //$order_srl = getNextSequence(); // insert into store_order //$args->order_srl = $order_srl; $args->order_srl = $args->order_srl; $args->title = $title; $args->item_count = $item_count; $args->member_srl = $logged_info->member_srl; $args->email_address = $logged_info->email_address; $args->user_id = $logged_info->user_id; $args->nick_name = $logged_info->nick_name; if ($args->payment_method == 'MO' && $logged_info->is_admin == 'Y' && $args->manorder_pid) { $args2->user_id = $args->manorder_pid; $output = executeQuery('member.getMemberInfo', $args2); if ($output->data) { $args->member_srl = $output->data->member_srl; $args->email_address = $output->data->email_address; $args->user_id = $output->data->user_id; $args->nick_name = $output->data->nick_name; } } $args->total_price = $cart->total_price; $args->price = nproductItem::price($cart->total_price); $args->order_title = $title; $args->sum_price = $cart->sum_price; $args->total_discounted_price = $cart->total_discounted_price; $args->total_discount_amount = $cart->total_discount_amount; $args->taxation_amount = $cart->taxation_amount; $args->supply_amount = $cart->supply_amount; $args->taxfree_amount = $cart->taxfree_amount; $args->vat = $cart->vat; if ($args->delivdest_info) { $args->extra_vars = serialize($args->delivdest_info); } foreach ($cart->item_list as $key => $val) { if ($val->module != 'nstore_digital') { continue; } /** * 상품정보 카트에 담기 */ $cartitem_args->cart_srl = $val->cart_srl; $cartitem_args->item_srl = $val->item_srl; $cartitem_args->member_srl = $args->member_srl; $cartitem_args->module_srl = $val->module_srl; $cartitem_args->quantity = $val->quantity; $cartitem_args->price = $val->price; $cartitem_args->taxfree = $val->taxfree; $output = executeQuery('nstore_digital.deleteCartItem', $cartitem_args); if (!$output->toBool()) { return $output; } $output = executeQuery('nstore_digital.insertCartItem', $cartitem_args); if (!$output->toBool()) { return $output; } unset($cartitem_args); } $output = executeQuery('nstore_digital.deleteOrder', $args); if (!$output->toBool()) { return $output; } $output = $this->insertOrder($args, $cart); if (!$output->toBool()) { return $output; } }
/** * @brief this method will be called by epay module when users complete to pay to buy somethings. * $in_args->item_name, $in_args->price fields must be set */ function triggerProcessReview(&$in_args) { // return if the target_module is not itself. if ($in_args->target_module != 'ncart') { return; } // objects to be used below. $oNcartModel =& getModel('ncart'); $oModuleModel =& getModel('module'); $oMemberModel =& getModel('member'); // get the member information. $logged_info = Context::get('logged_info'); // $args will be passed to the target modules. $args = $in_args; if ($args->manorder_pid) { $manorder_pid = $args->manorder_pid; } // 결제대행 유저 아이디. // get cart info $cart = $oNcartModel->getCartInfo($in_args->cartnos); $module_list = array(); $purchased_modules = array(); foreach ($cart->item_list as $key => $val) { // check quantity if (!$val->quantity) { return new Object(-1, 'msg_no_quantity_input'); } // add module if (!in_array($val->module, $module_list)) { $module_list[] = $val->module; } $purchased_modules[] = $val->module; } $item_count = count($cart->item_list); if (!$item_count) { return new Object(-1, 'No items to order'); } // check the gotten values. $fieldset_list = $oNcartModel->getFieldSetList($in_args->module_srl); $fieldcount = 0; $delivdest_info = array(); foreach ($fieldset_list as $key => $fieldset) { $proc_modules = explode(',', $fieldset->proc_modules); debugPrint('$purchased_modules'); debugPrint($purchased_modules); debugPrint($proc_modules); debugPrint($fieldset); if (count(array_diff($proc_modules, $purchased_modules)) == count($proc_modules)) { continue; } foreach ($fieldset->fields as $key2 => $field) { // check whether the field is required. if ($field->required == 'Y' && !isset($in_args->{$field->column_name})) { return new Object(-1, sprintf(Context::getLang('msg_field_input_required'), $field->column_title)); } if ($field->is_head == 'Y' && isset($in_args->{$field->column_name})) { $title = $in_args->{$field->column_name}; } if (in_array($field->column_type, array('kr_zip', 'tel', 'checkbox', 'radio')) && isset($in_args->{$field->column_name})) { if (!is_array($in_args->{$field->column_name})) { $in_args->{$field->column_name} = explode('|@|', $in_args->{$field->column_name}); } } if (!$title) { $title = $in_args->{$field->column_name}; } $delivdest_info[$field->column_title] = $in_args->{$field->column_name}; $fieldcount++; } } // insert the address if ($logged_info && $fieldcount) { $args->member_srl = $logged_info->member_srl; if (is_array($title)) { $title = implode(' ', $title); } $args->title = $title; $args->serialized_address = serialize($in_args); $args->opt = '2'; $args->address_srl = getNextSequence(); $args->list_order = $args->address_srl; $output = executeQuery('ncart.insertAddress', $args); if (!$output->toBool()) { return $output; } } // delivdest_info $in_args->delivdest_info = $delivdest_info; // get title $title = $oNcartModel->getOrderTitle($cart->item_list); // set item name $in_args->item_name = $title; $in_args->order_title = $title; // for compatibility // set price which is transformed by currency module setting. $in_args->price = nproductItem::price($cart->total_price); // delivery fee if ($in_args->delivfee_inadvance == 'N') { $cart->total_price -= $cart->delivery_fee; $cart->delivery_fee = 0; } $args = $in_args; // use mileage if ($args->use_mileage) { $cart->total_price = $cart->total_price - (int) $args->use_mileage; } // calculate mileage $args->mileage = 0; $config = $oNcartModel->getModuleConfig(); if ($config->mileage_percent) { $args->mileage = round($cart->total_price * ((double) $config->mileage_percent / 100)); } // insert into store_order //$args->order_srl = $order_srl; $args->order_srl = $in_args->order_srl; $args->title = $title; $args->order_title = $title; $args->item_count = $item_count; if ($logged_info) { $args->member_srl = $logged_info->member_srl; $args->purchaser_email = $logged_info->email_address; $args->purchaser_name = $logged_info->nick_name; if (isset($logged_info->{$config->purchaser_cellphone})) { $args->purchaser_cellphone = $logged_info->{$config->purchaser_cellphone}; } if (isset($logged_info->{$config->purchaser_telnum})) { $args->purchaser_telnum = $logged_info->{$config->purchaser_telnum}; } } if ($manorder_pid) { $args->user_id = $manorder_pid; $output = executeQuery('member.getMemberInfo', $args); $args->member_srl = $output->data->member_srl; $args->purchaser_name = $output->data->nick_name; $args->purchaser_email = $output->data->email_address; } if (!$manorder_pid && !$logged_info) { $args->purchaser_name = "비회원_" . $in_args->purchaser_name; $args->purchaser_cellphone = $in_args->cellphone; $args->purchaser_telnum = $in_args->telnum; $args->purchaser_email = $in_args->email_address; $args->member_srl = 0; } $args->total_price = $cart->total_price; $args->price = $in_args->price; $args->sum_price = $cart->sum_price; $args->delivery_fee = $cart->delivery_fee; $args->total_discounted_price = $cart->total_discounted_price; $args->total_discount_amount = $cart->total_discount_amount; $args->taxation_amount = $cart->taxation_amount; $args->supply_amount = $cart->supply_amount; $args->taxfree_amount = $cart->taxfree_amount; $args->vat = $cart->vat; $args->cart =& $cart; $args->extra_vars = serialize($in_args); $output = $this->insertOrder($args, $args->cart); if (!$output->toBool()) { return $output; } // call the review process method of the target module foreach ($module_list as $key => $val) { // get the target module's instance $oTargetModule =& getController($val); if ($oTargetModule) { if (method_exists($oTargetModule, 'processCartReview')) { // call the target method $output = $oTargetModule->processCartReview($args); if (is_object($output) && method_exists($output, 'toBool') && !$output->toBool()) { return $output; } } else { debugPrint(sprintf("processCartReview does not exist in %s controller.", $val)); } } else { debugPrint(sprintf("%s module controller does not exist.", $val)); } } }
<tr> <td class="star_td"> <ul class="starPoint"> <li><a href="#" onclick="return false;" rel="1">1</a></li> <li><a href="#" onclick="return false;" rel="2">2</a></li> <li><a href="#" onclick="return false;" rel="3">3</a></li> <li><a href="#" onclick="return false;" rel="4">4</a></li> <li><a href="#" onclick="return false;" rel="5">5</a></li> </ul> </td> <td class="advence_td"> <?php if ($__Context->config->review_bonus) { ?> <span><?php echo sprintf($__Context->lang->about_review_bonus, nproductItem::formatMoney($__Context->config->review_bonus)); ?> </span><?php } ?> <?php if (!$__Context->config->review_bonus) { ?> <span><?php echo $__Context->lang->about_review; ?> </span><?php } ?> </td> </tr>
?> </a>)</div> </td> <td><span title="<?php echo $__Context->order->title; ?> "><?php echo cut_str($__Context->order->title, 34); ?> </span></td> <td><?php echo number_format($__Context->order->item_count); ?> </td> <td><?php echo nproductItem::formatMoney($__Context->order->total_price); ?> </td> <?php if ($__Context->usedIdentifiers && count($__Context->usedIdentifiers)) { foreach ($__Context->usedIdentifiers as $__Context->key => $__Context->val) { ?> <td><a href="#popup_menu_area" class="member_<?php echo $__Context->order->member_srl; ?> " title="<?php echo $__Context->order_arr[$__Context->key]; ?> "><?php echo cut_str($__Context->order_arr[$__Context->key], 6); ?>
?> <!-- name --> <?php if (!$__Context->val->discount_amount && $__Context->k == 'amount') { ?> <td><span class="item_price"><?php echo $__Context->val->printPrice(); ?> </span></td><?php } ?> <?php if ($__Context->val->discount_amount && $__Context->k == 'amount') { ?> <td><span style="text-decoration:line-through;"><?php echo nproductItem::formatMoney($__Context->val->price); ?> </span><br /><span class="font_size12"><strong><?php echo $__Context->val->printDiscountedPrice(); ?> </strong></span></td><?php } ?> <?php } } ?> </tr><?php } } ?>