예제 #1
0
 /**
  * @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;
     }
 }
예제 #3
0
 /**
  * @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 
    }
}
?>