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)); } } }