Le code ci-dessous devient actif lorsque la quantité définie est atteinte.Remise basée sur la commande totale
Mais si ma quantité est de trois pour la remise éligible, dans ce cas, si un client achète quatre produits, il offre toujours un rabais pour trois produits seulement.
Il attend trois autres pour donner une réduction. Mais je veux que si ma quantité minimum de jeu se rencontre, alors il donnera une réduction sur le total des commandes en fonction de mon pourcentage défini.
Je ne sais pas de codage. Quelqu'un peut-il aider à résoudre le problème avec le codage?
Je suis nouveau sur stackoverflow. Si ma capacité d'expliquer est fausse, alors je demande vos excuses.
Voici le code.
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">×</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; ?> <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;
}
}
}
?>
Son travaillé. Merci beaucoup. –