Перейти к содержанию
Granled

Редактирование суммы заказа в админ панели

Рекомендуемые сообщения

Первое: я не программист пхп, даже до говнокодера не дотягиваю.

Второе: решение неполное, говняцкое и с ошибкой (некритичной), но рабочее.

Третье: я сам без готового решения мучался уйму времени, нет желания что бы кто то мучался так же. Поэтому есть желание поделится решением.

Четвертое: если кто знает как улучшить, буду только рад так как см пункт два.

 

Собственно само решение:

в admin\view\template\sale\order_form.tpl после <h1><?php echo $heading_title; ?></h1> добавляем

	 <p>
	Номер заказ  = <?php echo $order_id; ?> </br>
	<form method="POST" action="">
	Новя сумма заказа = <input name="tsumnew" type="text" placeholder="<?php foreach ($tsum as $tsums) { echo $tsums['total'];} ?>"/>
		<input type="submit" value="Изменить"/>
	</form></br>
	 </p>

в docs/admin/controller/sale/order.php после public function getForm() {  добавляем


	$order_id = $this->request->get['order_id'];
	$data['tsum'] = $this->db->query("SELECT * FROM `" . DB_PREFIX . "order` WHERE order_id = '" . (int)$order_id . "'"); 
	//Отправим данные в лес:
	if (isset($_POST['tsumnew'])){
	//Перенесем с формы
	$tsumnew = $_POST['tsumnew'];
	//Запрос на вставку данных
	$restsum = $this->db->query("UPDATE `oc_order` SET `total`='" . (int)$tsumnew . "' WHERE `order_id`='" . (int)$order_id . "'");
    }

Собственно все.

Спасибо камраду  flai0616 за нужный совет.

Изменено пользователем Granled

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

замените

$_POST['tsumnew']

на

$this->request->post['tsumnew']

и

SET `total`='" . (int)$tsumnew . "'

на

SET `total`='" . (float)$tsumnew . "'

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Total хранится в двух таблицах, поправьте как минимум и вторую.

Непонятно зачем это всё.

В списке заказов у клиента буде 100+100 = 300

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Должно быть какое-то обоснование изменения стоимости. Наценка/уценка за что-то. Скидка.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 minutes ago, d0tb0t said:

Должно быть какое-то обоснование изменения стоимости. Наценка/уценка за что-то. Скидка.

 

Спасибо за замечания. Изменение суммы заказа связано с характером магазина - оптовые закупки, плюсом сотни наименований в одном заказе. В ходе согласования заказа в любом случае вносятся изменения (заказчик хочет что то изменить, чего то нет на складе и прочее). При оплате картой через сайт эквайринговые системы берут именно тотал. Собственно менеджер меняет сумму и клиент платит ее. Гораздо удобнее и быстрее, чем мучатся с наценками, или редактировать таблицу товаров.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Следующий шаг это строчка в Total в виде скидки/наценки.

Сумму в этой строчке можно брать как разницу в текущей и желаемой сумме.

А от знака подставлять называние скидка или наценка.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не совсем понял о чем Вы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В настройках магазина можно включить "модуль" в разделе "Учитывать в заказе".

Который добавляет строчку в заказ например "За ручное оформление".

Как доставка или скидка, ещё одна строка.

По умолчанию = 0;

В редакторе заказа коррекцию производить у этой строки и суммы заказа.

Изменено пользователем d0tb0t

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно. Но мы ж легкими путями не ходим.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
<p>Номер заказ  = <?php echo $order_id; ?> <br/>
	<form method="POST" action="">
	Новя сумма заказа = <input name="total_new" type="text" value="<?php echo $total; ?>"/>
		<input type="submit" value="Изменить"/>
	</form></p>
$order_id = $this->request->get['order_id'];

$total = $this->db->query("SELECT total FROM " . DB_PREFIX . "order WHERE order_id = '" . (int)$order_id . "'"); 

$data['total'] = $total;

if (isset($this->request->post['total_new'])){
	$total_new = $this->request->post['total_new'];
	
	$handling_total = $total_new - $total;
	//Запрос на вставку данных
	$this->db->query("UPDATE " . DB_PREFIX . "order SET total = '" . (float)$total_new. "' WHERE order_id = '" . (int)$order_id . "'");
	$this->db->query("UPDATE " . DB_PREFIX . "order_total SET value = '" . (float)$total_new . "' WHERE order_id = '" . (int)$order_id . "' AND code = 'total'");
	$this->db->query("UPDATE " . DB_PREFIX . "order_total SET value = value + '" . (float)$handling_total . "' WHERE order_id = '" . (int)$order_id . "' AND code = 'handling'");
}

 

Изменено пользователем d0tb0t

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.