2015-08-24 1 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. (т. Четвёртые, пятые, шестые и т.д. будет скидка применяется)

EDIT

Просто перечитайте свой вопрос и теперь я понимаю, что вы хотите скидку применяется ко всему заказу, если по крайней мере, X продукты заказывали?

Если да, то изменить ту же самую строку выше

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

Если достичь желаемого эффекта. Это не повлияет на почтовые расходы или любые другие дополнительные расходы.

+0

Его работы. Большое спасибо. –