Toplam maliyeti gösteren satır öğesi ekle


10

Ubercart 2'ye satış fiyatını değil, tüm öğelerin toplam maliyetini toplayan bir satır öğesini nasıl ekleyebilirim? Genel satır öğesi kanca klonlamak ve geri arama için böyle bir şey eklemek için denedim:

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

Ben kullanıcı (ödeme ajax sepeti kullanıyorum), kullanıcı ödeme tamamlanmadan önce sipariş bölmesinde ve mağaza sahibi ve kullanıcı olsun e-postalarda görünmesi için bu satır öğesi gerekir. Bu kod için uc_order dışında küçük bir modül oluşturmam gerekiyor mu? Kodu tam olarak iş bilgisayarımdaki gibi hatırlamıyorum, ama sanırım yanlış yere koyuyorum. İşaretçiler için teşekkürler.

Yanıtlar:


1

Hook_uc_line_item () kullanarak bir satır öğesi oluşturdum ve sonra hook_uc_order () satır öğesini ekledim.

Nihai ürünler şuna benzer:

/*
 * 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);
      }
    }
  }
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.