Thêm chi tiết đơn hàng hiển thị tổng chi phí


10

Làm cách nào tôi có thể thêm một chi tiết đơn hàng trong Ubercart 2 để cộng tổng chi phí của tất cả các mặt hàng, không phải giá bán? Tôi đã cố gắng sao chép hook chi tiết đơn hàng chung và thêm một cái gì đó như thế này cho cuộc gọi lại:

for each($op->products as item){
  $cost += $item->cost;
}

Tôi cần chi tiết đơn hàng này xuất hiện trong giỏ hàng (Tôi đang sử dụng giỏ hàng ajax), trong ngăn thứ tự trước khi người dùng hoàn thành kiểm tra và trong các email mà chủ cửa hàng và người dùng nhận được. Tôi có cần tạo một mô-đun nhỏ cho mã này ngoài uc_order không? Tôi không nhớ mã chính xác như trên máy tính làm việc của mình, nhưng tôi nghĩ rằng tôi đang đặt sai vị trí. Cảm ơn cho bất kỳ con trỏ.

Câu trả lời:


1

Tôi đã tạo một mục hàng bằng hook_uc_line_item () sau đó thêm mục hàng trong hook_uc_order ().

Sản phẩm cuối cùng trông giống như:

/*
 * Implement hook_uc_line_item()
 */
function my_module_uc_line_item() {

  $items[] = array(
    'id' => 'handling_fee',
    'title' => t('Handling Fee'),
    'weight' => 5,
    'stored' => TRUE,
    'calculated' => TRUE,
    'display_only' => FALSE,
  );
  return $items;
}

/**
 * Implement hook_uc_order()
 */
function my_module_uc_order($op, $order, $arg2) {

  // This is the handling fee. Add only if the user is a professional and there
  // are shippable products in the cart.
  if  ($op == 'save') {
    global $user;

    if (in_array('professional', array_values($user->roles))) {


      // Determine if the fee is needed. If their are shippable items in the cart.
      $needs_fee = FALSE;
      foreach ($order->products as $pid => $product) {
        if ($product->shippable) {
          $needs_fee = TRUE;
        }
      }

      $line_items = uc_order_load_line_items($order);

      // Determine if the fee has already been applied.
      $has_fee = FALSE;
      foreach ($line_items as $key => $line_item) {
        if ($line_item['type'] == 'handling_fee') {
          $has_fee = $line_item['line_item_id'];
        }
      }

      // If the cart does not already have the fee and their are shippable items
      // add them.
      if ($has_fee === FALSE && $needs_fee) {
        uc_order_line_item_add($order->order_id, 'handling_fee', "Handling Fee", 9.95 , 5, null);
      }
      // If it has a fee and does not need one delete the fee line item.
      elseif ($has_fee !== FALSE && !$needs_fee) {
        uc_order_delete_line_item($has_fee);
      }
    }
  }
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.