মোট ব্যয় দেখায় লাইন আইটেম যুক্ত করুন


10

আমি উবারকার্ট 2 এ একটি লাইন আইটেম কীভাবে যুক্ত করতে পারি যা বিক্রয় সামগ্রীর চেয়ে সমস্ত আইটেমের মোট ব্যয় যুক্ত করে? আমি জেনেরিক লাইন আইটেম হুকটি ক্লোন করার চেষ্টা করেছি এবং কলব্যাকের জন্য এই জাতীয় কিছু যুক্ত করেছি:

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

আমার এই লাইন আইটেমটি কার্টে উপস্থিত হতে হবে (আমি এজাক্স কার্টটি ব্যবহার করছি), ব্যবহারকারীর চেকআউটটি সম্পন্ন করার আগে ক্রমটিতে, এবং স্টোর মালিক এবং ব্যবহারকারী যে ইমেলগুলি পান। ইউসি_র্ডারের বাইরে এই কোডটির জন্য আমার কি একটু মডিউল তৈরি করা দরকার? কোডটি আমার কাজের কম্পিউটারে ঠিক তেমন মনে নেই তবে আমি মনে করি আমি এটি ভুল জায়গায় রেখে দিচ্ছি। কোন পয়েন্টার জন্য ধন্যবাদ।

উত্তর:


1

আমি hook_uc_line_item () ব্যবহার করে একটি লাইন আইটেম তৈরি করেছি এবং তারপরে হুক_উক_র্ডার () এ লাইন আইটেমটি যুক্ত করেছি।

চূড়ান্ত পণ্যগুলি দেখতে এমন কিছু দেখাচ্ছে:

/*
 * 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);
      }
    }
  }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.