2015-08-24 64 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

它的工作。非常感谢。 –