2015-08-24 117 views
0

當我的設定數量滿足時,下面的代碼變爲激活狀態。根據訂單總額折扣

但是如果我的設定數量爲三摺合格折扣,那麼如果有任何客戶購買四件產品,它仍然只給三件產品打折。

它等待另外三個給予折扣。但是,如果我設定的最小數量符合要求,那麼它會根據我設定的百分比給予總訂單折扣。

  1. 我不知道編碼。任何人都可以幫助解決它與編碼?

  2. 我是新來的stackoverflow。如果我的解釋能力不對,那麼我請你道歉。

這是代碼。

admin/controller/total/total_discount.php

<?php 
class ControllerTotalTotalDiscount extends Controller { 
    private $error = array(); 

    public function index() { 
     $this->load->language('total/total_discount'); 

     $this->document->setTitle($this->language->get('heading_title')); 

     $this->load->model('setting/setting'); 

     if (($this->request->server['REQUEST_METHOD'] == 'POST') && ($this->validate())) { 
      $this->model_setting_setting->editSetting('total_discount', $this->request->post); 

      $this->session->data['success'] = $this->language->get('text_success'); 

    $this->response->redirect($this->url->link('extension/total', 'token=' . $this->session->data['token'], 'SSL')); 
     } 

     $data['heading_title'] = $this->language->get('heading_title'); 
     $data['text_edit'] = $this->language->get('text_edit'); 

     $data['text_enabled'] = $this->language->get('text_enabled'); 
     $data['text_disabled'] = $this->language->get('text_disabled'); 
     $data['text_each'] = $this->language->get('text_each'); 
     $data['text_once'] = $this->language->get('text_once'); 

     $data['entry_count'] = $this->language->get('entry_count'); 
     $data['entry_percent'] = $this->language->get('entry_percent'); 
     $data['entry_each'] = $this->language->get('entry_each'); 
     $data['entry_status'] = $this->language->get('entry_status'); 
     $data['entry_sort_order'] = $this->language->get('entry_sort_order'); 

     $data['help_count'] = $this->language->get('help_count'); 
     $data['help_percent'] = $this->language->get('help_percent'); 
     $data['help_each'] = $this->language->get('help_each'); 

     $data['button_save'] = $this->language->get('button_save'); 
     $data['button_cancel'] = $this->language->get('button_cancel'); 

     if (isset($this->error['warning'])) { 
      $data['error_warning'] = $this->error['warning']; 
     } else { 
      $data['error_warning'] = ''; 
     } 

     $data['breadcrumbs'] = array(); 

     $data['breadcrumbs'][] = array(
      'text' => $this->language->get('text_home'), 
      'href' => $this->url->link('common/dashboard', 'token=' . $this->session->data['token'], 'SSL') 
     ); 

     $data['breadcrumbs'][] = array(
      'text' => $this->language->get('text_total'), 
      'href' => $this->url->link('extension/total', 'token=' . $this->session->data['token'], 'SSL') 
     ); 

     $data['breadcrumbs'][] = array(
      'text' => $this->language->get('heading_title'), 
      'href' => $this->url->link('total/total_discount', 'token=' . $this->session->data['token'], 'SSL') 
     ); 

     $data['action'] = $this->url->link('total/total_discount', 'token=' . $this->session->data['token'], 'SSL'); 

     $data['cancel'] = $this->url->link('extension/total', 'token=' . $this->session->data['token'], 'SSL'); 

     if (isset($this->request->post['total_discount_count'])) { 
      $data['total_discount_count'] = $this->request->post['total_discount_count']; 
     } else { 
      $data['total_discount_count'] = $this->config->get('total_discount_count'); 
     } 

     if (isset($this->request->post['total_discount_percent'])) { 
      $data['total_discount_percent'] = $this->request->post['total_discount_percent']; 
     } else { 
      $data['total_discount_percent'] = $this->config->get('total_discount_percent'); 
     } 

     if (isset($this->request->post['total_discount_each_count'])) { 
      $data['total_discount_each_count'] = $this->request->post['total_discount_each_count']; 
     } else { 
      $data['total_discount_each_count'] = $this->config->get('total_discount_each_count'); 
     } 

     if (isset($this->request->post['total_discount_status'])) { 
      $data['total_discount_status'] = $this->request->post['total_discount_status']; 
     } else { 
      $data['total_discount_status'] = $this->config->get('total_discount_status'); 
     } 

     if (isset($this->request->post['total_discount_sort_order'])) { 
      $data['total_discount_sort_order'] = $this->request->post['total_discount_sort_order']; 
     } else { 
      $data['total_discount_sort_order'] = $this->config->get('total_discount_sort_order'); 
     } 

     $data['header'] = $this->load->controller('common/header'); 
     $data['column_left'] = $this->load->controller('common/column_left'); 
     $data['footer'] = $this->load->controller('common/footer'); 

     $this->response->setOutput($this->load->view('total/total_discount.tpl', $data)); 
    } 

    private function validate() { 
     if (!$this->user->hasPermission('modify', 'total/total_discount')) { 
      $this->error['warning'] = $this->language->get('error_permission'); 
     } 
return !$this->error; 
    } 
} 
?> 

admin>language/English/total/total_discount.php

<?php 

// Heading 
$_['heading_title'] = 'Percent Discount for Big Orders'; 

// Text 
$_['text_edit']  = 'Edit'; 
$_['text_total']  = 'Order Totals'; 
$_['text_success']  = 'Success: You have modified Discount total!'; 
$_['text_each']  = 'Each'; 
$_['text_once']  = 'Once'; 

// Entry 
$_['entry_count']  = 'Products Count:'; 
$_['entry_percent'] = 'Percent Discount:'; 
$_['entry_each']  = 'Discount:'; 
$_['entry_status']  = 'Status:'; 
$_['entry_sort_order'] = 'Sort Order:'; 


//help 

$_['help_count']  = 'The products count the order must reach before the discount becomes active.'; 
$_['help_percent']  = 'of the cheapest product in the order.'; 
$_['help_each']  = 'for Each X products or just Once.'; 
// Error 
$_['error_permission'] = 'Warning: You do not have permission to modify Discount total!'; 
?> 

admin/view/template/total/total_discount.tpl

<?php echo $header; ?><?php echo $column_left; ?> 
<div id="content"> 
    <div class="page-header"> 
    <div class="container-fluid"> 
     <div class="pull-right"> 
     <button type="submit" form="form-discount" data-toggle="tooltip" title="<?php echo $button_save; ?>" class="btn btn-primary"><i class="fa fa-save"></i></button> 
     <a href="<?php echo $cancel; ?>" data-toggle="tooltip" title="<?php echo $button_cancel; ?>" class="btn btn-default"><i class="fa fa-reply"></i></a></div> 
     <h1><?php echo $heading_title; ?></h1> 
     <ul class="breadcrumb"> 
     <?php foreach ($breadcrumbs as $breadcrumb) { ?> 
     <li><a href="<?php echo $breadcrumb['href']; ?>"><?php echo $breadcrumb['text']; ?></a></li> 
     <?php } ?> 
     </ul> 
    </div> 
    </div> 
    <div class="container-fluid"> 
    <?php if ($error_warning) { ?> 
    <div class="alert alert-danger"><i class="fa fa-exclamation-circle"></i> <?php echo $error_warning; ?> 
     <button type="button" class="close" data-dismiss="alert">&times;</button> 
    </div> 
    <?php } ?> 
    <div class="panel panel-default"> 
     <div class="panel-heading"> 
     <h3 class="panel-title"><i class="fa fa-pencil"></i> <?php echo $text_edit; ?></h3> 
     </div> 
     <div class="panel-body"> 
     <form action="<?php echo $action; ?>" method="post" enctype="multipart/form-data" id="form-discount" class="form-horizontal"> 

     <div class="form-group"> 
      <label class="col-sm-2 control-label" for="input-count"><span data-toggle="tooltip" title="<?php echo $help_count; ?>"><?php echo $entry_count; ?></span></label> 
      <div class="col-sm-10"> 
      <input type="text" name="total_discount_count" value="<?php echo $total_discount_count; ?>" placeholder="<?php echo $entry_count; ?>" id="input-count" class="form-control" /> 
      </div> 
      </div> 

      <div class="form-group"> 
      <label class="col-sm-2 control-label" for="input-percent"><span data-toggle="tooltip" title="<?php echo $help_percent; ?>"><?php echo $entry_percent; ?>&nbsp;<b>%</b></span></label> 
      <div class="col-sm-10"> 
      <input type="text" name="total_discount_percent" value="<?php echo $total_discount_percent; ?>" placeholder="<?php echo $entry_percent; ?>" id="input-percent" class="form-control" /> 
      </div> 
      </div> 

      <div class="form-group"> 
      <label class="col-sm-2 control-label" for="input-each"><span data-toggle="tooltip" title="<?php echo $help_each; ?>"><?php echo $entry_each; ?></span></label> 
      <div class="col-sm-10"> 
       <select name="total_discount_each_count" id="input-each" class="form-control"> 
       <?php if ($total_discount_each_count) { ?> 
       <option value="1" selected="selected"><?php echo $text_each; ?></option> 
       <option value="0"><?php echo $text_once; ?>></option> 
       <?php } else { ?> 
       <option value="1"><?php echo $text_each; ?></option> 
       <option value="0" selected="selected"><?php echo $text_once; ?></option> 
       <?php } ?> 
       </select> 
      </div> 
      </div> 


    <div class="form-group"> 
      <label class="col-sm-2 control-label" for="input-status"><?php echo $entry_status; ?></label> 
      <div class="col-sm-10"> 
       <select name="total_discount_status" id="input-status" class="form-control"> 
        <?php if ($total_discount_status) { ?> 
       <option value="1" selected="selected"><?php echo $text_enabled; ?></option> 
       <option value="0"><?php echo $text_disabled; ?></option> 
       <?php } else { ?> 
       <option value="1"><?php echo $text_enabled; ?></option> 
       <option value="0" selected="selected"><?php echo $text_disabled; ?></option> 
       <?php } ?> 
       </select> 
      </div> 
      </div> 

      <div class="form-group"> 
      <label class="col-sm-2 control-label" for="input-sort-order"><?php echo $entry_sort_order; ?></label> 
      <div class="col-sm-10"> 
      <input type="text" name="total_discount_sort_order" value="<?php echo $total_discount_count; ?>" placeholder="<?php echo $entry_sort_order; ?>" id="input-sort-order" class="form-control" /> 
      </div> 
      </div> 
     </form> 
     </div> 
    </div> 
    </div> 
</div> 
<?php echo $footer; ?> 

catalog/language/english/total/total_discount.php

<?php 
$_['text_total_discount'] = 'Discount'; 
?> 

catelog/model/total/total_discount.php

<?php 

class ModelTotalTotalDiscount extends Model { 
    public function getTotal(&$total_data, &$total, &$taxes) { 
     $count = 0; 
     $price = 0; 
     $prices = array(); 

     foreach ($this->cart->getProducts() as $product) { 
      $count += $product['quantity']; 

      for ($i = 0; $i < $product['quantity']; $i++) { 
       $prices[] = $product['price']; 
      } 
     } 

     sort($prices); 

     if ($count >= (int)$this->config->get('total_discount_count')) { 
      if ($this->config->get('total_discount_each_count')) { 
       $items_count = floor($count/(int)$this->config->get('total_discount_count')); 

       for ($i = 0; $i < $items_count; $i++) { 
        $price += $prices[$i]; 
       } 
      } else { 
       $price += $prices[0]; 
      } 

      $this->load->language('total/total_discount'); 

      $price *= (float)$this->config->get('total_discount_percent')/100; 

      $total_data[] = array(
       'code'  => 'total_discount', 
       'title'  => $this->language->get('text_total_discount'), 
       'text'  => $this->currency->format(-$price), 
       'value'  => -$price, 
       'sort_order' => $this->config->get('total_discount_sort_order') 
      ); 

      $total -= $price; 
     } 
    } 
} 
?> 

回答

1

這是預期的行爲 - 如果你買了3個款產品,你得到一個%年齡過最便宜的,所以當然如果你想要的折扣你將有兩款產品購買6.

但是你想要它,所以如果你購買3個或更多產品,你會得到每個額外產品的折扣? (例如,如果你購買4,你會得到2折扣,如果你購買5,折扣適用於3等?)

如果你不熟悉編碼,我不會真的建議要與此搞亂(或絕對保留備份你做之前),但我會做的修改是在catalog/model/total/total_discount.php您發佈的最後一個文件:

更改線路

$items_count = floor($count/(int)$this->config->get('total_discount_count')); 

if ($count > (int)$this->config->get('total_discount_count')) { 
    $items_count = $count - (int)$this->config->get('total_discount_count'); 
} else { 
    $items_count = 0; 
} 

這樣做的結果是,如果您說3種產品爲折扣計數,則折扣適用的產品數將爲購物車中產品的數量減3。第四,第五,第六等,將已申請貼現)

編輯

只是重讀你的問題,我現在明白了,你想,如果應用到整個訂單的折扣至少X產品進行排序?

如果是,則改變上面

if ($count >= (int)$this->config->get('total_discount_count')) { 
    $items_count = $count; 
} else { 
    $items_count = 0; 
} 

如果達到期望的效果的同一條線上。它不會影響郵資或任何其他額外費用。

+0

它的工作。非常感謝。 –