- 10 Fev 2023, 17:55
#91003
Olá gente!
Estou tentando montar um modulo que informe uma porcentagem exemplo de 10% em todos os produtos do site.
Tenho os seguinte códigos:
Controller:
Adicionei a tabela que aceite o valor
VALUES (0, 'module', 'module_percentage_fee', '1', 0);
Para ficar gravado em banco o valor da porcentagem
E no frontend somente adicionar o valor de {{ sale_price }}.
Pq eu estou fazendo isso.
Atualmente existe uma OC com + - 6000 produtos.
Utilizamos um ERP integrado a um HUB
ERP envia o cadastro de produto ao HUB e o HUB envia para o O.C.
O que acontece que no O.C vendemos a grupos de usuários.
Alguns usuários ganham desconto pela forma de pagamento.
E acaba que pega o valor do ERP (valor original) e da o desconto
Mas não pode-se vender ao preço abaixo do ERP.
Então pensei em criar o modulo que seja colocar uma porcentagem tipo 5% e ele substitua o valor de venda.
Recebe o valor Base e acrescenta 5% no valor do produto de venda.
Alguns vão dizer que é para mudar no cadastro do produto. mas não temos como fazer manualmente, pelo fato de muitos produtos em cadastros.
E pelo fluxo de entrada e saída de produtos.
Pois todo o processo é feito pelo ERP e não pelo OC.
Mas encerrando o Poadcast
No controller:
Ao clicar no salvar apresenta o erro
Notice: Undefined index: module_percentage_fee in admin/controller/extension/module/percentage_fee.php on line 65
Mas não estou conseguindo acertar.
Não grava no banco a informação também.
Alguém que consiga me auxilar?
Estou tentando montar um modulo que informe uma porcentagem exemplo de 10% em todos os produtos do site.
Tenho os seguinte códigos:
Controller:
Código: Selecionar todos
E tenho o view:
<?php
class ControllerExtensionModulePercentageFee extends Controller {
private $error = array();
public function index() {
$this->load->language('extension/module/percentage_fee');
$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('module_percentage_fee', $this->request->post);
$this->session->data['success'] = $this->language->get('text_success');
$this->response->redirect($this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=module', true));
}
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', 'user_token=' . $this->session->data['user_token'], true)
);
$data['breadcrumbs'][] = array(
'text' => $this->language->get('text_extension'),
'href' => $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=module', true)
);
$data['breadcrumbs'][] = array(
'text' => $this->language->get('heading_title'),
'href' => $this->url->link('extension/module/percentage_fee', 'user_token=' . $this->session->data['user_token'], true)
);
$data['action'] = $this->url->link('extension/module/percentage_fee', 'user_token=' . $this->session->data['user_token'], true);
$data['cancel'] = $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=module', true);
if (isset($this->request->post['module_percentage_fee'])) {
$data['module_percentage_fee'] = $this->request->post['module_percentage_fee'];
} else {
$data['module_percentage_fee'] = $this->config->get('module_percentage_fee');
}
$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('extension/module/percentage_fee', $data));
}
protected function validate() {
if (!$this->user->hasPermission('modify', 'extension/module/percentage_fee')) {
$this->error['warning'] = $this->language->get('error_permission');
}
if (!$this->request->post['module_percentage_fee']) {
$this->error['fee'] = $this->language->get('error_fee');
}
return !$this->error;
}
}
Código: Selecionar todos
E o model
{{ header }}{{ column_left }}
<div id="content">
<div class="page-header">
<div class="container-fluid">
<div class="pull-right">
<button type="submit" form="form-augment-prices" data-toggle="tooltip" title="{{ button_save }}" class="btn btn-primary"><i class="fa fa-save"></i></button>
<a href="{{ cancel }}" data-toggle="tooltip" title="{{ button_cancel }}" class="btn btn-default"><i class="fa fa-reply"></i></a>
</div>
<h1>{{ heading_title }}</h1>
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
</div>
</div>
<div class="container-fluid">
{% if error_warning %}
<div class="alert alert-danger alert-dismissible"><i class="fa fa-exclamation-circle"></i> {{ error_warning }}
<button type="button" class="close" data-dismiss="alert">×</button>
</div>
{% endif %}
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title"><i class="fa fa-pencil"></i> {{ text_edit }}</h3>
</div>
<div class="panel-body">
<form action="{{ action }}" method="post" enctype="multipart/form-data" id="form-percentage-fee">
<div class="form-group">
<label class="col-form-label" for="input-status">{{ entry_status }}</label>
<select name="percentage_fee_status" id="input-status" class="form-control">
{% if percentage_fee_status %}
<option value="1" selected="selected">{{ text_enabled }}</option>
<option value="0">{{ text_disabled }}</option>
{% else %}
<option value="1">{{ text_enabled }}</option>
<option value="0" selected="selected">{{ text_disabled }}</option>
{% endif %}
</select>
</div>
<div class="form-group">
<label class="col-form-label" for="input-percentage">{{ entry_percentage }}</label>
<input type="text" name="percentage_fee_percentage" value="{{ percentage_fee }}" placeholder="{{ entry_percentage }}" id="input-percentage" class="form-control"/>
</div>
<div class="text-right">
<button type="submit" form="form-percentage-fee" class="btn btn-primary">{{ button_save }}</button>
<a href="{{ cancel }}" class="btn btn-secondary">{{ button_cancel }}</a>
</div>
</form>
</div>
</div>
</div>
</div>
{{ footer }}
Código: Selecionar todos
Dentro do banco de dados na tabela oc_setting<?php
class ModelExtensionModulePercentageFee extends Model {
public function getPercentage() {
$query = $this->db->query("SELECT value FROM " . DB_PREFIX . "setting WHERE `key` = 'module_percentage_fee_fee'");
return $query->row['value'];
}
}
Adicionei a tabela que aceite o valor
VALUES (0, 'module', 'module_percentage_fee', '1', 0);
Para ficar gravado em banco o valor da porcentagem
E no frontend somente adicionar o valor de {{ sale_price }}.
Pq eu estou fazendo isso.
Atualmente existe uma OC com + - 6000 produtos.
Utilizamos um ERP integrado a um HUB
ERP envia o cadastro de produto ao HUB e o HUB envia para o O.C.
O que acontece que no O.C vendemos a grupos de usuários.
Alguns usuários ganham desconto pela forma de pagamento.
E acaba que pega o valor do ERP (valor original) e da o desconto
Mas não pode-se vender ao preço abaixo do ERP.
Então pensei em criar o modulo que seja colocar uma porcentagem tipo 5% e ele substitua o valor de venda.
Recebe o valor Base e acrescenta 5% no valor do produto de venda.
Alguns vão dizer que é para mudar no cadastro do produto. mas não temos como fazer manualmente, pelo fato de muitos produtos em cadastros.
E pelo fluxo de entrada e saída de produtos.
Pois todo o processo é feito pelo ERP e não pelo OC.
Mas encerrando o Poadcast
No controller:
Código: Selecionar todos
Esta apresentando erro na hora de salvar no view<?php
class ControllerExtensionModulePercentageFee extends Controller {
private $error = array();
public function index() {
$this->load->language('extension/module/percentage_fee');
$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('module_percentage_fee', $this->request->post);
$this->session->data['success'] = $this->language->get('text_success');
$this->response->redirect($this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=module', true));
}
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', 'user_token=' . $this->session->data['user_token'], true)
);
$data['breadcrumbs'][] = array(
'text' => $this->language->get('text_extension'),
'href' => $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=module', true)
);
$data['breadcrumbs'][] = array(
'text' => $this->language->get('heading_title'),
'href' => $this->url->link('extension/module/percentage_fee', 'user_token=' . $this->session->data['user_token'], true)
);
$data['action'] = $this->url->link('extension/module/percentage_fee', 'user_token=' . $this->session->data['user_token'], true);
$data['cancel'] = $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=module', true);
if (isset($this->request->post['module_percentage_fee'])) {
$data['module_percentage_fee'] = $this->request->post['module_percentage_fee'];
} else {
$data['module_percentage_fee'] = $this->config->get('module_percentage_fee');
}
$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('extension/module/percentage_fee', $data));
}
protected function validate() {
if (!$this->user->hasPermission('modify', 'extension/module/percentage_fee')) {
$this->error['warning'] = $this->language->get('error_permission');
}
if (!$this->request->post['module_percentage_fee']) {
$this->error['fee'] = $this->language->get('error_fee');
}
return !$this->error;
}
}
Ao clicar no salvar apresenta o erro
Notice: Undefined index: module_percentage_fee in admin/controller/extension/module/percentage_fee.php on line 65
Código: Selecionar todos
Seria adicionar uma verificação se o índice "module_percentage_fee" está definido na variável $_POST antes de tentar acessá-lo?if (!$this->request->post['module_percentage_fee']) {
$this->error['fee'] = $this->language->get('error_fee');
}
Mas não estou conseguindo acertar.
Não grava no banco a informação também.
Alguém que consiga me auxilar?
Turcorossi
:ugeek:
:ugeek: