Jump to content
Sign in to follow this  
Beck7

[Решено] Меняем в статусе товара кол-во дней ожидания поставки

Recommended Posts

Всем привет!

 

В нашем ИМ есть позиции товара, которые мы не держим в наличии, но хотим продавать под заказ. Поставщик подвозит товар 1 раз в неделю по средам, поэтому сейчас мы ставим статус при отсутствии товара на складе "Ожидание 7-8 дней". Хотелось бы, чтобы это количество изменялось в зависимости от дня недели.

 

Я решил реализовать это через SQL запрос UPDATE, вызываемый при каждой загрузке страницы.

12-15 лет назад я увлекался программированием на php3, но уже мало что помню, да и язык стал объектно-ориентированным. Я пытался вставить такую конструкцию в подвал файла index.php:

//   Обновление срока ожидания товара

$days_to_supply = 7;
$db->query("UPDATE `c1043`.`stock_status` SET `name` = \'Ожидание ".$days_to_supply."-".($days_to_supply+1)." дней\' WHERE `stock_status`.`stock_status_id` = 6 AND `stock_status`.`language_id` = 1");

Но с ней на выходе получается пустая страница, при этом никакой ошибки не появляется в логах.

Стоит отметить, что база правильно обрабатывает этот SQL запрос через phpmyadmin.

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

 

З.Ы. Код для правильного присвоения значения переменной $days_to_supply я еще напишу. Но если и это подскажете - с меня пиво! =)

Share this post


Link to post
Share on other sites

Добрый день.

 

Не надо делать лишние апдейты в базе.

 

Лучше сделать это правильным способом.

1) Делам статус заказа например: "Ожидание {s}"

2) В модели товара: catalog/model/catalog/product.php

в функции public function getProduct($product_id) {

перед строкой: return array(

добавляем: $query->row['stock_status'] = str_replace('{s}', '5 дней', $query->row['stock_status']);

Число дней до поступления вытягиваем откуда надо.

Или расчитываем от дня недели, если поставки идут еженедельно.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Similar Content

    • By svmax
      Наш стек: (OPENCART 1.5), Memcached, MуSQL. Интернет-магазин интегрирован с 1С и облачной CRM, платежной системой.
      часть внутреннего функционала написано JavaScript фреймворке Vue.js 
      Требования к кандидату:
      - Знание php mysql html css javascrip
      - Знание архитектуры MVC
      - Опыт работы с опенкарт ocStore Версия 1.5.5.1.2
      - Умение работать с системой контроля версий Git (github.com)
      Оплата 500р в час. 
      Задачи составляются в подробное ТЗ, выполнение контролируется тимлидом. 
      Работа не разовая, задачи на доработки появляются регулярно.
      примерная загрузка 50-100 часов в месяц.
      Обязанности:
      Развитие интернет-магазина,
      Интеграции с внешними сервисами,
      Правка или доработка шаблона,
      Работы по ускорению магазина,
      Написание нового функционала и расширение функций движка.
      Дописывания новой бизнес логики.

      - Текущие задачи требующие выполнения.
      * Доработать внутренний скрипт управления товарами (php).
      * Исправить ошибки php кода из журнала логирования ошибок
      * Перевести движок сайта с php 5.6 => php 7.3
      * Настроить кеширование запросов к базе данных на тяжелых страницах
      * Поработать со скоростью загрузки страниц сайта.
       
      При откликах желательно прикреплять портфолио и описание о себе.
    • By Alexey6
      Здравствуйте!
       
      Имеется модуль АОП.
      Залил товары, пока от 2 поставщиков.
      Поставщики в разных городах, хотел для каждого сделать статус при НЕнулевом остатке не "в наличии", а для одного "ожидание 2-3 дня", для другого "ожидание 5-7 дней".
      То есть, в идеале:
      1) для поставщика 1: если остаток в прайсе >0, то статус "ожидание 2-3 дня", если остаток в прайсе < 0, то  "нет в наличии".
      2) для поставщика 2: если остаток в прайсе >0, то статус "ожидание 5-7 дней", если остаток в прайсе < 0, то  "нет в наличии".
       
      Затем будут залиты товары (обновлены по SKU), которые будут в наличии у меня (а не на складе поставщика), вот у них хотелось бы оставить статус "в наличии".
       
      Возможно ли сделать это или для этого какой-то отдельный модуль нужен?
      Если в коде надо что-то поменять, то в каком файле (желательно с путем).
       
      P. S. OpenCart Version 3.0.3.2 (rs.2)
       
       
    • By asan2014
      Всем привет! 
      Подскажите пожалуйста что за ошибка и как от нее избавиться? Я так понимаю это нагрузка на бд . Сайт уходит в тайм-аут после загрузки прайс листов через модуль АОП
       
       
       
      Warning: mysqli::set_charset(): Error executing query in /home/users/9/9788483067/domains/xn----8sbg7aoeiv6i.xn--p1ai/system/library/db/mysqli.php on line 13
      Fatal error: Uncaught Exception: Error: User '9788483067' has exceeded the 'max_queries_per_hour' resource (current value: 1)<br />Error No: 1226<br />SELECT `data` FROM `oc_session` WHERE session_id = '2461112c8e00e2fb99b5a1fd7b' AND expire > 1610624612 in /home/users/9/9788483067/domains/xn----8sbg7aoeiv6i.xn--p1ai/system/library/db/mysqli.php:40 Stack trace: #0 /home/users/9/9788483067/domains/xn----8sbg7aoeiv6i.xn--p1ai/system/library/db.php(45): DB\MySQLi->query('SELECT `data` F...') #1 /home/users/9/9788483067/domains/xn----8sbg7aoeiv6i.xn--p1ai/system/library/session/db.php(21): DB->query('SELECT `data` F...') #2 /home/users/9/9788483067/domains/xn----8sbg7aoeiv6i.xn--p1ai/system/library/session.php(72): Session\DB->read('2461112c8e00e2f...') #3 /home/users/9/9788483067/domains/xn----8sbg7aoeiv6i.xn--p1ai/system/framework.php(106): Session->start('2461112c8e00e2f...') #4 /home/users/9/9788483067/domains/xn----8sbg7aoeiv6i.xn--p1ai/system/startup.php(104): require_once('/home/users/9/9...') #5 /home/users/9/97884830 in /home/users/9/9788483067/domains/xn----8sbg7aoeiv6i.xn--p1ai/system/library/db/mysqli.php on line 40

      Fatal error: Uncaught Exception: Error: User '9788483067' has exceeded the 'max_queries_per_hour' resource (current value: 1)<br />Error No: 1226<br />REPLACE INTO `oc_session` SET session_id = '2461112c8e00e2fb99b5a1fd7b', `data` = '[]', expire = '2021-01-14 12:07:32' in /home/users/9/9788483067/domains/xn----8sbg7aoeiv6i.xn--p1ai/system/library/db/mysqli.php:40 Stack trace: #0 /home/users/9/9788483067/domains/xn----8sbg7aoeiv6i.xn--p1ai/system/library/db.php(45): DB\MySQLi->query('REPLACE INTO `o...') #1 /home/users/9/9788483067/domains/xn----8sbg7aoeiv6i.xn--p1ai/system/library/session/db.php(32): DB->query('REPLACE INTO `o...') #2 /home/users/9/9788483067/domains/xn----8sbg7aoeiv6i.xn--p1ai/system/library/session.php(81): Session\DB->write('2461112c8e00e2f...', Array) #3 [internal function]: Session->close() #4 {main} thrown in /home/users/9/9788483067/domains/xn----8sbg7aoeiv6i.xn--p1ai/system/library/db/mysqli.php on line 40
    • By valerykurak
      Здравствуйте, для пользователей созданы произвольные поля, в бд именуются как custom_field. Проблема в том, что sql запрос выводит массив из всех значений кастомных полей, которые есть и плюс непонятными символами. Может кто сталкивался и можете подсказать как вывести не символами, а нормально?

    • By valerykurak
      Здравствуйте. Есть обычная контактная форма в ней несколько select'ов. Образование, страна, регион. Поля образований хранятся прямо в самой форме. Можно ли сделать страна регион как в админ панели опенкарт к примеру при добавления адреса покупателя?
  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.