MusicMan08 Опубліковано: 3 вересня 2013 Share Опубліковано: 3 вересня 2013 Подскажите, какая команда служит для удаления заказа через mysql, если нет возможности удалить заказ через админку. Удалить нужно так, чтобы товар вернулся на склад после удаления заказа. Пробовал так: mysql> DELETE from `order` WHERE order_id = "номер заказа"; но товар Не возвращается на склад. Если удаляю через админку, товар возвращается на склад и доступен для нового заказа. ЧЯДНТ? Надіслати Поділитися на інших сайтах More sharing options...
Baco Опубліковано: 3 вересня 2013 Share Опубліковано: 3 вересня 2013 $this->db->query("DELETE FROM `" . DB_PREFIX . "order` WHERE order_id = '"номер заказа"'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_product WHERE order_id = '"номер заказа"'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_option WHERE order_id = '"номер заказа"'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_download WHERE order_id = '"номер заказа"'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_voucher WHERE order_id = '"номер заказа"'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_total WHERE order_id = '"номер заказа"'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_history WHERE order_id = '"номер заказа"'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_fraud WHERE order_id = '"номер заказа"'"); $this->db->query("DELETE FROM " . DB_PREFIX . "customer_transaction WHERE order_id = '"номер заказа"'"); $this->db->query("DELETE FROM " . DB_PREFIX . "customer_reward WHERE order_id = '"номер заказа"'"); $this->db->query("DELETE FROM " . DB_PREFIX . "affiliate_transaction WHERE order_id = '"номер заказа"'"); Теперь переформулировать вопрос нужно, как составить один запрос, ключ в которм был бы "номер заказа" Надіслати Поділитися на інших сайтах More sharing options... MusicMan08 Опубліковано: 3 вересня 2013 Автор Share Опубліковано: 3 вересня 2013 $this->db->query("DELETE FROM `" . DB_PREFIX . "order` WHERE order_id = '"номер заказа"'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_product WHERE order_id = '"номер заказа"'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_option WHERE order_id = '"номер заказа"'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_download WHERE order_id = '"номер заказа"'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_voucher WHERE order_id = '"номер заказа"'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_total WHERE order_id = '"номер заказа"'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_history WHERE order_id = '"номер заказа"'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_fraud WHERE order_id = '"номер заказа"'"); $this->db->query("DELETE FROM " . DB_PREFIX . "customer_transaction WHERE order_id = '"номер заказа"'"); $this->db->query("DELETE FROM " . DB_PREFIX . "customer_reward WHERE order_id = '"номер заказа"'"); $this->db->query("DELETE FROM " . DB_PREFIX . "affiliate_transaction WHERE order_id = '"номер заказа"'"); Теперь переформулировать вопрос нужно, как составить один запрос, ключ в которм был бы "номер заказа" Так точно, буду очень признателен если кто-то поможет составить один запрос из всего этого Надіслати Поділитися на інших сайтах More sharing options... Baco Опубліковано: 3 вересня 2013 Share Опубліковано: 3 вересня 2013 Хотя можно проще сделать, создать новую функцию, которая будет включать в себя все эти запросы по удалению и прикрепить её в нужном месте. Надіслати Поділитися на інших сайтах More sharing options... afwollis Опубліковано: 3 вересня 2013 Share Опубліковано: 3 вересня 2013 Удалить нужно так, чтобы товар вернулся на склад после удаления заказа. скучно живется и много свободного времени? удаляйте через админку - для этого она и существует. Теперь переформулировать вопрос нужно, как составить один запрос, ключ в которм был бы "номер заказа" никак. можно извращаться с процедурами, но одним запросом - никак. Надіслати Поділитися на інших сайтах More sharing options... MusicMan08 Опубліковано: 4 вересня 2013 Автор Share Опубліковано: 4 вересня 2013 скучно живется и много свободного времени? удаляйте через админку - для этого она и существует. никак. можно извращаться с процедурами, но одним запросом - никак. Объясню. Так как нормального возврата в opencart нет, приходится извращаться. У меня не магазин, а склад. Мне нужно, чтобы человек набрал себе товар (к примеру 10 наименований), а через некоторое время (это может случиться и ночью) его вернул на склад. Ночью я обычно сплю, и принимать товар обратно на склад я не могу. Поэтому с помощью программы autoit, создал простое приложение, которое получает на вход номер заказа и удаляет его. Приложение работает на основе консольных команд. Дать доступ к админке людям я дать не могу. Если кто-то предложит что-то другое, пожалуйста. Надіслати Поділитися на інших сайтах More sharing options... SOKOJI Опубліковано: 4 вересня 2013 Share Опубліковано: 4 вересня 2013 Объясню. Так как нормального возврата в opencart нет, приходится извращаться. У меня не магазин, а склад. Мне нужно, чтобы человек набрал себе товар (к примеру 10 наименований), а через некоторое время (это может случиться и ночью) его вернул на склад. Ночью я обычно сплю, и принимать товар обратно на склад я не могу. Поэтому с помощью программы autoit, создал простое приложение, которое получает на вход номер заказа и удаляет его. Приложение работает на основе консольных команд. Дать доступ к админке людям я дать не могу. Если кто-то предложит что-то другое, пожалуйста. Сделай какой-нибудь контроллер, в котором размести процедуру удаления заказа из базы. При этом, передавай в гет какую-нибудь секретную фразу, чтобы без нее ничего не удалялось. Например: index.php?route=catalog/delete_order&secret=password&order_id=52 Пара условий в контроллере, подключенная моделька с заказами и все ок. Я думаю, консоль способна отправить гет-запрос на сервер. Надіслати Поділитися на інших сайтах More sharing options... Baco Опубліковано: 4 вересня 2013 Share Опубліковано: 4 вересня 2013 Если для магазина, то можете в файле: catalog\model\account\order.php перед функцией:public function getTotalOrderVouchersByOrderId($order_id) { добавить свою: public function delOrderById($order_id) { $this->db->query("DELETE FROM `" . DB_PREFIX . "order` WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_product WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_option WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_download WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_voucher WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_total WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_history WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_fraud WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "customer_transaction WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "customer_reward WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "affiliate_transaction WHERE order_id = '" . (int)$order_id . "'"); } в контроллере же, добавить вызов этой функции (controller\account\order.php): $this->data['delorid'] = $this->model_account_order->delOrderById($this->request->post['order_id']); теперь остальсь создать форму, в ТПЛ файле, где постом будет передаваться значение заказа, тоесть его ИД. Надіслати Поділитися на інших сайтах More sharing options... MusicMan08 Опубліковано: 4 вересня 2013 Автор Share Опубліковано: 4 вересня 2013 Спасибо ребят, буду пробовать. Надіслати Поділитися на інших сайтах More sharing options... MusicMan08 Опубліковано: 4 вересня 2013 Автор Share Опубліковано: 4 вересня 2013 $this->db->query("DELETE FROM `" . DB_PREFIX . "order` WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "order_product WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "order_option WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "order_download WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "order_voucher WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "order_total WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "order_history WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "order_fraud WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "customer_transaction WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "customer_reward WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "affiliate_transaction WHERE order_id = '"номер заказа"'");Теперь переформулировать вопрос нужно, как составить один запрос, ключ в которм был бы "номер заказа" Возвращаясь к этим запросам. Последовательное их выполнение всеравно не позволяет возвратить товар в магазин. Он не доступен для заказа. Заказ из админки удаляется. Надіслати Поділитися на інших сайтах More sharing options... Baco Опубліковано: 4 вересня 2013 Share Опубліковано: 4 вересня 2013 public function delOrId($order_id) { $order_query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "order` WHERE order_status_id > '0' AND order_id = '" . (int)$order_id . "'"); if ($order_query->num_rows) { $product_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_product WHERE order_id = '" . (int)$order_id . "'"); foreach($product_query->rows as $product) { $this->db->query("UPDATE `" . DB_PREFIX . "product` SET quantity = (quantity + " . (int)$product['quantity'] . ") WHERE product_id = '" . (int)$product['product_id'] . "' AND subtract = '1'"); $option_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_option WHERE order_id = '" . (int)$order_id . "' AND order_product_id = '" . (int)$product['order_product_id'] . "'"); foreach ($option_query->rows as $option) { $this->db->query("UPDATE " . DB_PREFIX . "product_option_value SET quantity = (quantity + " . (int)$product['quantity'] . ") WHERE product_option_value_id = '" . (int)$option['product_option_value_id'] . "' AND subtract = '1'"); } } } $this->db->query("DELETE FROM `" . DB_PREFIX . "order` WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_product WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_option WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_download WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_voucher WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_total WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_history WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_fraud WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "customer_transaction WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "customer_reward WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "affiliate_transaction WHERE order_id = '" . (int)$order_id . "'"); } Надіслати Поділитися на інших сайтах More sharing options... MusicMan08 Опубліковано: 5 вересня 2013 Автор Share Опубліковано: 5 вересня 2013 Ребята, в общем получилось удалить заказ и вернуть товар на склад с помощью запросов mysql. Вот таким образом: INSERT INTO `return`(`product`, `model`, `quantity`, `order_id`) SELECT `name`, `model`, `quantity`, `order_id` FROM `order_product` WHERE `order_id` = "xxx"; INSERT INTO `return`(`order_id`, `firstname`, `email`, `telephone`, `comment`, `date_added`, `date_modified`) SELECT `order_id`, `firstname`, `email`, `telephone`, `comment`, `date_added`, `date_modified` FROM `order` WHERE `order_id` = "xxx"; UPDATE `product` SET quantity = "15" WHERE `product_id` in (SELECT `product_id` from `order_product` WHERE `order_id` ="xxx"); DELETE from `order` WHERE order_id = "xxx"; Теперь возникает другой вопрос: в админке в разделе возвраты появляется несколько возвратов одного заказа. Связано это с тем, что каждый товар это отдельный возврат, а если у меня в заказе 10 товаров, то и в разделе возвратов будет 10 возвратов. Если есть спецы по mysql, подскажите как мне на уровне запроса mysql объединить эти, например, 10 возвратов в один, то есть выполнить слияние в один возврат. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Загальні питання удаление заказа через mysql Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
MusicMan08 Опубліковано: 3 вересня 2013 Автор Share Опубліковано: 3 вересня 2013 $this->db->query("DELETE FROM `" . DB_PREFIX . "order` WHERE order_id = '"номер заказа"'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_product WHERE order_id = '"номер заказа"'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_option WHERE order_id = '"номер заказа"'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_download WHERE order_id = '"номер заказа"'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_voucher WHERE order_id = '"номер заказа"'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_total WHERE order_id = '"номер заказа"'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_history WHERE order_id = '"номер заказа"'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_fraud WHERE order_id = '"номер заказа"'"); $this->db->query("DELETE FROM " . DB_PREFIX . "customer_transaction WHERE order_id = '"номер заказа"'"); $this->db->query("DELETE FROM " . DB_PREFIX . "customer_reward WHERE order_id = '"номер заказа"'"); $this->db->query("DELETE FROM " . DB_PREFIX . "affiliate_transaction WHERE order_id = '"номер заказа"'"); Теперь переформулировать вопрос нужно, как составить один запрос, ключ в которм был бы "номер заказа" Так точно, буду очень признателен если кто-то поможет составить один запрос из всего этого Надіслати Поділитися на інших сайтах More sharing options...
Baco Опубліковано: 3 вересня 2013 Share Опубліковано: 3 вересня 2013 Хотя можно проще сделать, создать новую функцию, которая будет включать в себя все эти запросы по удалению и прикрепить её в нужном месте. Надіслати Поділитися на інших сайтах More sharing options... afwollis Опубліковано: 3 вересня 2013 Share Опубліковано: 3 вересня 2013 Удалить нужно так, чтобы товар вернулся на склад после удаления заказа. скучно живется и много свободного времени? удаляйте через админку - для этого она и существует. Теперь переформулировать вопрос нужно, как составить один запрос, ключ в которм был бы "номер заказа" никак. можно извращаться с процедурами, но одним запросом - никак. Надіслати Поділитися на інших сайтах More sharing options... MusicMan08 Опубліковано: 4 вересня 2013 Автор Share Опубліковано: 4 вересня 2013 скучно живется и много свободного времени? удаляйте через админку - для этого она и существует. никак. можно извращаться с процедурами, но одним запросом - никак. Объясню. Так как нормального возврата в opencart нет, приходится извращаться. У меня не магазин, а склад. Мне нужно, чтобы человек набрал себе товар (к примеру 10 наименований), а через некоторое время (это может случиться и ночью) его вернул на склад. Ночью я обычно сплю, и принимать товар обратно на склад я не могу. Поэтому с помощью программы autoit, создал простое приложение, которое получает на вход номер заказа и удаляет его. Приложение работает на основе консольных команд. Дать доступ к админке людям я дать не могу. Если кто-то предложит что-то другое, пожалуйста. Надіслати Поділитися на інших сайтах More sharing options... SOKOJI Опубліковано: 4 вересня 2013 Share Опубліковано: 4 вересня 2013 Объясню. Так как нормального возврата в opencart нет, приходится извращаться. У меня не магазин, а склад. Мне нужно, чтобы человек набрал себе товар (к примеру 10 наименований), а через некоторое время (это может случиться и ночью) его вернул на склад. Ночью я обычно сплю, и принимать товар обратно на склад я не могу. Поэтому с помощью программы autoit, создал простое приложение, которое получает на вход номер заказа и удаляет его. Приложение работает на основе консольных команд. Дать доступ к админке людям я дать не могу. Если кто-то предложит что-то другое, пожалуйста. Сделай какой-нибудь контроллер, в котором размести процедуру удаления заказа из базы. При этом, передавай в гет какую-нибудь секретную фразу, чтобы без нее ничего не удалялось. Например: index.php?route=catalog/delete_order&secret=password&order_id=52 Пара условий в контроллере, подключенная моделька с заказами и все ок. Я думаю, консоль способна отправить гет-запрос на сервер. Надіслати Поділитися на інших сайтах More sharing options... Baco Опубліковано: 4 вересня 2013 Share Опубліковано: 4 вересня 2013 Если для магазина, то можете в файле: catalog\model\account\order.php перед функцией:public function getTotalOrderVouchersByOrderId($order_id) { добавить свою: public function delOrderById($order_id) { $this->db->query("DELETE FROM `" . DB_PREFIX . "order` WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_product WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_option WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_download WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_voucher WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_total WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_history WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_fraud WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "customer_transaction WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "customer_reward WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "affiliate_transaction WHERE order_id = '" . (int)$order_id . "'"); } в контроллере же, добавить вызов этой функции (controller\account\order.php): $this->data['delorid'] = $this->model_account_order->delOrderById($this->request->post['order_id']); теперь остальсь создать форму, в ТПЛ файле, где постом будет передаваться значение заказа, тоесть его ИД. Надіслати Поділитися на інших сайтах More sharing options... MusicMan08 Опубліковано: 4 вересня 2013 Автор Share Опубліковано: 4 вересня 2013 Спасибо ребят, буду пробовать. Надіслати Поділитися на інших сайтах More sharing options... MusicMan08 Опубліковано: 4 вересня 2013 Автор Share Опубліковано: 4 вересня 2013 $this->db->query("DELETE FROM `" . DB_PREFIX . "order` WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "order_product WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "order_option WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "order_download WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "order_voucher WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "order_total WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "order_history WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "order_fraud WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "customer_transaction WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "customer_reward WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "affiliate_transaction WHERE order_id = '"номер заказа"'");Теперь переформулировать вопрос нужно, как составить один запрос, ключ в которм был бы "номер заказа" Возвращаясь к этим запросам. Последовательное их выполнение всеравно не позволяет возвратить товар в магазин. Он не доступен для заказа. Заказ из админки удаляется. Надіслати Поділитися на інших сайтах More sharing options... Baco Опубліковано: 4 вересня 2013 Share Опубліковано: 4 вересня 2013 public function delOrId($order_id) { $order_query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "order` WHERE order_status_id > '0' AND order_id = '" . (int)$order_id . "'"); if ($order_query->num_rows) { $product_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_product WHERE order_id = '" . (int)$order_id . "'"); foreach($product_query->rows as $product) { $this->db->query("UPDATE `" . DB_PREFIX . "product` SET quantity = (quantity + " . (int)$product['quantity'] . ") WHERE product_id = '" . (int)$product['product_id'] . "' AND subtract = '1'"); $option_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_option WHERE order_id = '" . (int)$order_id . "' AND order_product_id = '" . (int)$product['order_product_id'] . "'"); foreach ($option_query->rows as $option) { $this->db->query("UPDATE " . DB_PREFIX . "product_option_value SET quantity = (quantity + " . (int)$product['quantity'] . ") WHERE product_option_value_id = '" . (int)$option['product_option_value_id'] . "' AND subtract = '1'"); } } } $this->db->query("DELETE FROM `" . DB_PREFIX . "order` WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_product WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_option WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_download WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_voucher WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_total WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_history WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_fraud WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "customer_transaction WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "customer_reward WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "affiliate_transaction WHERE order_id = '" . (int)$order_id . "'"); } Надіслати Поділитися на інших сайтах More sharing options... MusicMan08 Опубліковано: 5 вересня 2013 Автор Share Опубліковано: 5 вересня 2013 Ребята, в общем получилось удалить заказ и вернуть товар на склад с помощью запросов mysql. Вот таким образом: INSERT INTO `return`(`product`, `model`, `quantity`, `order_id`) SELECT `name`, `model`, `quantity`, `order_id` FROM `order_product` WHERE `order_id` = "xxx"; INSERT INTO `return`(`order_id`, `firstname`, `email`, `telephone`, `comment`, `date_added`, `date_modified`) SELECT `order_id`, `firstname`, `email`, `telephone`, `comment`, `date_added`, `date_modified` FROM `order` WHERE `order_id` = "xxx"; UPDATE `product` SET quantity = "15" WHERE `product_id` in (SELECT `product_id` from `order_product` WHERE `order_id` ="xxx"); DELETE from `order` WHERE order_id = "xxx"; Теперь возникает другой вопрос: в админке в разделе возвраты появляется несколько возвратов одного заказа. Связано это с тем, что каждый товар это отдельный возврат, а если у меня в заказе 10 товаров, то и в разделе возвратов будет 10 возвратов. Если есть спецы по mysql, подскажите как мне на уровне запроса mysql объединить эти, например, 10 возвратов в один, то есть выполнить слияние в один возврат. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Загальні питання удаление заказа через mysql Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000
afwollis Опубліковано: 3 вересня 2013 Share Опубліковано: 3 вересня 2013 Удалить нужно так, чтобы товар вернулся на склад после удаления заказа. скучно живется и много свободного времени? удаляйте через админку - для этого она и существует. Теперь переформулировать вопрос нужно, как составить один запрос, ключ в которм был бы "номер заказа" никак. можно извращаться с процедурами, но одним запросом - никак. Надіслати Поділитися на інших сайтах More sharing options... MusicMan08 Опубліковано: 4 вересня 2013 Автор Share Опубліковано: 4 вересня 2013 скучно живется и много свободного времени? удаляйте через админку - для этого она и существует. никак. можно извращаться с процедурами, но одним запросом - никак. Объясню. Так как нормального возврата в opencart нет, приходится извращаться. У меня не магазин, а склад. Мне нужно, чтобы человек набрал себе товар (к примеру 10 наименований), а через некоторое время (это может случиться и ночью) его вернул на склад. Ночью я обычно сплю, и принимать товар обратно на склад я не могу. Поэтому с помощью программы autoit, создал простое приложение, которое получает на вход номер заказа и удаляет его. Приложение работает на основе консольных команд. Дать доступ к админке людям я дать не могу. Если кто-то предложит что-то другое, пожалуйста. Надіслати Поділитися на інших сайтах More sharing options... SOKOJI Опубліковано: 4 вересня 2013 Share Опубліковано: 4 вересня 2013 Объясню. Так как нормального возврата в opencart нет, приходится извращаться. У меня не магазин, а склад. Мне нужно, чтобы человек набрал себе товар (к примеру 10 наименований), а через некоторое время (это может случиться и ночью) его вернул на склад. Ночью я обычно сплю, и принимать товар обратно на склад я не могу. Поэтому с помощью программы autoit, создал простое приложение, которое получает на вход номер заказа и удаляет его. Приложение работает на основе консольных команд. Дать доступ к админке людям я дать не могу. Если кто-то предложит что-то другое, пожалуйста. Сделай какой-нибудь контроллер, в котором размести процедуру удаления заказа из базы. При этом, передавай в гет какую-нибудь секретную фразу, чтобы без нее ничего не удалялось. Например: index.php?route=catalog/delete_order&secret=password&order_id=52 Пара условий в контроллере, подключенная моделька с заказами и все ок. Я думаю, консоль способна отправить гет-запрос на сервер. Надіслати Поділитися на інших сайтах More sharing options... Baco Опубліковано: 4 вересня 2013 Share Опубліковано: 4 вересня 2013 Если для магазина, то можете в файле: catalog\model\account\order.php перед функцией:public function getTotalOrderVouchersByOrderId($order_id) { добавить свою: public function delOrderById($order_id) { $this->db->query("DELETE FROM `" . DB_PREFIX . "order` WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_product WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_option WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_download WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_voucher WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_total WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_history WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_fraud WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "customer_transaction WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "customer_reward WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "affiliate_transaction WHERE order_id = '" . (int)$order_id . "'"); } в контроллере же, добавить вызов этой функции (controller\account\order.php): $this->data['delorid'] = $this->model_account_order->delOrderById($this->request->post['order_id']); теперь остальсь создать форму, в ТПЛ файле, где постом будет передаваться значение заказа, тоесть его ИД. Надіслати Поділитися на інших сайтах More sharing options... MusicMan08 Опубліковано: 4 вересня 2013 Автор Share Опубліковано: 4 вересня 2013 Спасибо ребят, буду пробовать. Надіслати Поділитися на інших сайтах More sharing options... MusicMan08 Опубліковано: 4 вересня 2013 Автор Share Опубліковано: 4 вересня 2013 $this->db->query("DELETE FROM `" . DB_PREFIX . "order` WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "order_product WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "order_option WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "order_download WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "order_voucher WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "order_total WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "order_history WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "order_fraud WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "customer_transaction WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "customer_reward WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "affiliate_transaction WHERE order_id = '"номер заказа"'");Теперь переформулировать вопрос нужно, как составить один запрос, ключ в которм был бы "номер заказа" Возвращаясь к этим запросам. Последовательное их выполнение всеравно не позволяет возвратить товар в магазин. Он не доступен для заказа. Заказ из админки удаляется. Надіслати Поділитися на інших сайтах More sharing options... Baco Опубліковано: 4 вересня 2013 Share Опубліковано: 4 вересня 2013 public function delOrId($order_id) { $order_query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "order` WHERE order_status_id > '0' AND order_id = '" . (int)$order_id . "'"); if ($order_query->num_rows) { $product_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_product WHERE order_id = '" . (int)$order_id . "'"); foreach($product_query->rows as $product) { $this->db->query("UPDATE `" . DB_PREFIX . "product` SET quantity = (quantity + " . (int)$product['quantity'] . ") WHERE product_id = '" . (int)$product['product_id'] . "' AND subtract = '1'"); $option_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_option WHERE order_id = '" . (int)$order_id . "' AND order_product_id = '" . (int)$product['order_product_id'] . "'"); foreach ($option_query->rows as $option) { $this->db->query("UPDATE " . DB_PREFIX . "product_option_value SET quantity = (quantity + " . (int)$product['quantity'] . ") WHERE product_option_value_id = '" . (int)$option['product_option_value_id'] . "' AND subtract = '1'"); } } } $this->db->query("DELETE FROM `" . DB_PREFIX . "order` WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_product WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_option WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_download WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_voucher WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_total WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_history WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_fraud WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "customer_transaction WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "customer_reward WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "affiliate_transaction WHERE order_id = '" . (int)$order_id . "'"); } Надіслати Поділитися на інших сайтах More sharing options... MusicMan08 Опубліковано: 5 вересня 2013 Автор Share Опубліковано: 5 вересня 2013 Ребята, в общем получилось удалить заказ и вернуть товар на склад с помощью запросов mysql. Вот таким образом: INSERT INTO `return`(`product`, `model`, `quantity`, `order_id`) SELECT `name`, `model`, `quantity`, `order_id` FROM `order_product` WHERE `order_id` = "xxx"; INSERT INTO `return`(`order_id`, `firstname`, `email`, `telephone`, `comment`, `date_added`, `date_modified`) SELECT `order_id`, `firstname`, `email`, `telephone`, `comment`, `date_added`, `date_modified` FROM `order` WHERE `order_id` = "xxx"; UPDATE `product` SET quantity = "15" WHERE `product_id` in (SELECT `product_id` from `order_product` WHERE `order_id` ="xxx"); DELETE from `order` WHERE order_id = "xxx"; Теперь возникает другой вопрос: в админке в разделе возвраты появляется несколько возвратов одного заказа. Связано это с тем, что каждый товар это отдельный возврат, а если у меня в заказе 10 товаров, то и в разделе возвратов будет 10 возвратов. Если есть спецы по mysql, подскажите как мне на уровне запроса mysql объединить эти, например, 10 возвратов в один, то есть выполнить слияние в один возврат. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Загальні питання удаление заказа через mysql
MusicMan08 Опубліковано: 4 вересня 2013 Автор Share Опубліковано: 4 вересня 2013 скучно живется и много свободного времени? удаляйте через админку - для этого она и существует. никак. можно извращаться с процедурами, но одним запросом - никак. Объясню. Так как нормального возврата в opencart нет, приходится извращаться. У меня не магазин, а склад. Мне нужно, чтобы человек набрал себе товар (к примеру 10 наименований), а через некоторое время (это может случиться и ночью) его вернул на склад. Ночью я обычно сплю, и принимать товар обратно на склад я не могу. Поэтому с помощью программы autoit, создал простое приложение, которое получает на вход номер заказа и удаляет его. Приложение работает на основе консольных команд. Дать доступ к админке людям я дать не могу. Если кто-то предложит что-то другое, пожалуйста. Надіслати Поділитися на інших сайтах More sharing options...
SOKOJI Опубліковано: 4 вересня 2013 Share Опубліковано: 4 вересня 2013 Объясню. Так как нормального возврата в opencart нет, приходится извращаться. У меня не магазин, а склад. Мне нужно, чтобы человек набрал себе товар (к примеру 10 наименований), а через некоторое время (это может случиться и ночью) его вернул на склад. Ночью я обычно сплю, и принимать товар обратно на склад я не могу. Поэтому с помощью программы autoit, создал простое приложение, которое получает на вход номер заказа и удаляет его. Приложение работает на основе консольных команд. Дать доступ к админке людям я дать не могу. Если кто-то предложит что-то другое, пожалуйста. Сделай какой-нибудь контроллер, в котором размести процедуру удаления заказа из базы. При этом, передавай в гет какую-нибудь секретную фразу, чтобы без нее ничего не удалялось. Например: index.php?route=catalog/delete_order&secret=password&order_id=52 Пара условий в контроллере, подключенная моделька с заказами и все ок. Я думаю, консоль способна отправить гет-запрос на сервер. Надіслати Поділитися на інших сайтах More sharing options...
Baco Опубліковано: 4 вересня 2013 Share Опубліковано: 4 вересня 2013 Если для магазина, то можете в файле: catalog\model\account\order.php перед функцией:public function getTotalOrderVouchersByOrderId($order_id) { добавить свою: public function delOrderById($order_id) { $this->db->query("DELETE FROM `" . DB_PREFIX . "order` WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_product WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_option WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_download WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_voucher WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_total WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_history WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_fraud WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "customer_transaction WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "customer_reward WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "affiliate_transaction WHERE order_id = '" . (int)$order_id . "'"); } в контроллере же, добавить вызов этой функции (controller\account\order.php): $this->data['delorid'] = $this->model_account_order->delOrderById($this->request->post['order_id']); теперь остальсь создать форму, в ТПЛ файле, где постом будет передаваться значение заказа, тоесть его ИД. Надіслати Поділитися на інших сайтах More sharing options... MusicMan08 Опубліковано: 4 вересня 2013 Автор Share Опубліковано: 4 вересня 2013 Спасибо ребят, буду пробовать. Надіслати Поділитися на інших сайтах More sharing options... MusicMan08 Опубліковано: 4 вересня 2013 Автор Share Опубліковано: 4 вересня 2013 $this->db->query("DELETE FROM `" . DB_PREFIX . "order` WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "order_product WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "order_option WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "order_download WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "order_voucher WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "order_total WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "order_history WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "order_fraud WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "customer_transaction WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "customer_reward WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "affiliate_transaction WHERE order_id = '"номер заказа"'");Теперь переформулировать вопрос нужно, как составить один запрос, ключ в которм был бы "номер заказа" Возвращаясь к этим запросам. Последовательное их выполнение всеравно не позволяет возвратить товар в магазин. Он не доступен для заказа. Заказ из админки удаляется. Надіслати Поділитися на інших сайтах More sharing options... Baco Опубліковано: 4 вересня 2013 Share Опубліковано: 4 вересня 2013 public function delOrId($order_id) { $order_query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "order` WHERE order_status_id > '0' AND order_id = '" . (int)$order_id . "'"); if ($order_query->num_rows) { $product_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_product WHERE order_id = '" . (int)$order_id . "'"); foreach($product_query->rows as $product) { $this->db->query("UPDATE `" . DB_PREFIX . "product` SET quantity = (quantity + " . (int)$product['quantity'] . ") WHERE product_id = '" . (int)$product['product_id'] . "' AND subtract = '1'"); $option_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_option WHERE order_id = '" . (int)$order_id . "' AND order_product_id = '" . (int)$product['order_product_id'] . "'"); foreach ($option_query->rows as $option) { $this->db->query("UPDATE " . DB_PREFIX . "product_option_value SET quantity = (quantity + " . (int)$product['quantity'] . ") WHERE product_option_value_id = '" . (int)$option['product_option_value_id'] . "' AND subtract = '1'"); } } } $this->db->query("DELETE FROM `" . DB_PREFIX . "order` WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_product WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_option WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_download WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_voucher WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_total WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_history WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_fraud WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "customer_transaction WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "customer_reward WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "affiliate_transaction WHERE order_id = '" . (int)$order_id . "'"); } Надіслати Поділитися на інших сайтах More sharing options... MusicMan08 Опубліковано: 5 вересня 2013 Автор Share Опубліковано: 5 вересня 2013 Ребята, в общем получилось удалить заказ и вернуть товар на склад с помощью запросов mysql. Вот таким образом: INSERT INTO `return`(`product`, `model`, `quantity`, `order_id`) SELECT `name`, `model`, `quantity`, `order_id` FROM `order_product` WHERE `order_id` = "xxx"; INSERT INTO `return`(`order_id`, `firstname`, `email`, `telephone`, `comment`, `date_added`, `date_modified`) SELECT `order_id`, `firstname`, `email`, `telephone`, `comment`, `date_added`, `date_modified` FROM `order` WHERE `order_id` = "xxx"; UPDATE `product` SET quantity = "15" WHERE `product_id` in (SELECT `product_id` from `order_product` WHERE `order_id` ="xxx"); DELETE from `order` WHERE order_id = "xxx"; Теперь возникает другой вопрос: в админке в разделе возвраты появляется несколько возвратов одного заказа. Связано это с тем, что каждый товар это отдельный возврат, а если у меня в заказе 10 товаров, то и в разделе возвратов будет 10 возвратов. Если есть спецы по mysql, подскажите как мне на уровне запроса mysql объединить эти, например, 10 возвратов в один, то есть выполнить слияние в один возврат. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку
MusicMan08 Опубліковано: 4 вересня 2013 Автор Share Опубліковано: 4 вересня 2013 Спасибо ребят, буду пробовать. Надіслати Поділитися на інших сайтах More sharing options...
MusicMan08 Опубліковано: 4 вересня 2013 Автор Share Опубліковано: 4 вересня 2013 $this->db->query("DELETE FROM `" . DB_PREFIX . "order` WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "order_product WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "order_option WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "order_download WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "order_voucher WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "order_total WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "order_history WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "order_fraud WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "customer_transaction WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "customer_reward WHERE order_id = '"номер заказа"'");$this->db->query("DELETE FROM " . DB_PREFIX . "affiliate_transaction WHERE order_id = '"номер заказа"'");Теперь переформулировать вопрос нужно, как составить один запрос, ключ в которм был бы "номер заказа" Возвращаясь к этим запросам. Последовательное их выполнение всеравно не позволяет возвратить товар в магазин. Он не доступен для заказа. Заказ из админки удаляется. Надіслати Поділитися на інших сайтах More sharing options...
Baco Опубліковано: 4 вересня 2013 Share Опубліковано: 4 вересня 2013 public function delOrId($order_id) { $order_query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "order` WHERE order_status_id > '0' AND order_id = '" . (int)$order_id . "'"); if ($order_query->num_rows) { $product_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_product WHERE order_id = '" . (int)$order_id . "'"); foreach($product_query->rows as $product) { $this->db->query("UPDATE `" . DB_PREFIX . "product` SET quantity = (quantity + " . (int)$product['quantity'] . ") WHERE product_id = '" . (int)$product['product_id'] . "' AND subtract = '1'"); $option_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_option WHERE order_id = '" . (int)$order_id . "' AND order_product_id = '" . (int)$product['order_product_id'] . "'"); foreach ($option_query->rows as $option) { $this->db->query("UPDATE " . DB_PREFIX . "product_option_value SET quantity = (quantity + " . (int)$product['quantity'] . ") WHERE product_option_value_id = '" . (int)$option['product_option_value_id'] . "' AND subtract = '1'"); } } } $this->db->query("DELETE FROM `" . DB_PREFIX . "order` WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_product WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_option WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_download WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_voucher WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_total WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_history WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "order_fraud WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "customer_transaction WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "customer_reward WHERE order_id = '" . (int)$order_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "affiliate_transaction WHERE order_id = '" . (int)$order_id . "'"); } Надіслати Поділитися на інших сайтах More sharing options... MusicMan08 Опубліковано: 5 вересня 2013 Автор Share Опубліковано: 5 вересня 2013 Ребята, в общем получилось удалить заказ и вернуть товар на склад с помощью запросов mysql. Вот таким образом: INSERT INTO `return`(`product`, `model`, `quantity`, `order_id`) SELECT `name`, `model`, `quantity`, `order_id` FROM `order_product` WHERE `order_id` = "xxx"; INSERT INTO `return`(`order_id`, `firstname`, `email`, `telephone`, `comment`, `date_added`, `date_modified`) SELECT `order_id`, `firstname`, `email`, `telephone`, `comment`, `date_added`, `date_modified` FROM `order` WHERE `order_id` = "xxx"; UPDATE `product` SET quantity = "15" WHERE `product_id` in (SELECT `product_id` from `order_product` WHERE `order_id` ="xxx"); DELETE from `order` WHERE order_id = "xxx"; Теперь возникает другой вопрос: в админке в разделе возвраты появляется несколько возвратов одного заказа. Связано это с тем, что каждый товар это отдельный возврат, а если у меня в заказе 10 товаров, то и в разделе возвратов будет 10 возвратов. Если есть спецы по mysql, подскажите как мне на уровне запроса mysql объединить эти, например, 10 возвратов в один, то есть выполнить слияние в один возврат. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0
MusicMan08 Опубліковано: 5 вересня 2013 Автор Share Опубліковано: 5 вересня 2013 Ребята, в общем получилось удалить заказ и вернуть товар на склад с помощью запросов mysql. Вот таким образом: INSERT INTO `return`(`product`, `model`, `quantity`, `order_id`) SELECT `name`, `model`, `quantity`, `order_id` FROM `order_product` WHERE `order_id` = "xxx"; INSERT INTO `return`(`order_id`, `firstname`, `email`, `telephone`, `comment`, `date_added`, `date_modified`) SELECT `order_id`, `firstname`, `email`, `telephone`, `comment`, `date_added`, `date_modified` FROM `order` WHERE `order_id` = "xxx"; UPDATE `product` SET quantity = "15" WHERE `product_id` in (SELECT `product_id` from `order_product` WHERE `order_id` ="xxx"); DELETE from `order` WHERE order_id = "xxx"; Теперь возникает другой вопрос: в админке в разделе возвраты появляется несколько возвратов одного заказа. Связано это с тем, что каждый товар это отдельный возврат, а если у меня в заказе 10 товаров, то и в разделе возвратов будет 10 возвратов. Если есть спецы по mysql, подскажите как мне на уровне запроса mysql объединить эти, например, 10 возвратов в один, то есть выполнить слияние в один возврат. Надіслати Поділитися на інших сайтах More sharing options...
Recommended Posts