Автор Тема: Изменить № заказа с букв на цифры (Преста 1.5)  (Прочитано 18743 раз)

09 Январь 2013, 14:34:49
Ответ #15
  • Фрилансер
  • *
  • Сообщений: 110
  • Репутация: +0/-0
    • Просмотр профиля
    • Кладовая кондитера
Проверьте код на ошибки.
Очистите кеш.

Копировала Вашу строку. Перепроверю еще.
Сорри, в 1.4  кэш чистили в папках смарти, в1.5 такого нет :-(
Приблизительно так :-)  www.konditeram.com
09 Январь 2013, 14:49:05
Ответ #16
  • Администратор
  • Ветеран
  • *****
  • Сообщений: 102503
  • Репутация: +34219/-0
    • Просмотр профиля
Цитировать
Сорри, в 1.4  кэш чистили в папках смарти, в1.5 такого нет :-(
Prestashop 1.5
/cache/smarty/cache/
/cache/smarty/compile/
02 Февраль 2013, 03:45:06
Ответ #17
  • Фрилансер
  • *
  • Сообщений: 181
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
У меня Prestashop 1.5.3.1.  Пожалуйста, проясните данный вопрос до конца. Как сделать все же, чтобы номера заказов и счетов-фактур везде отображались одинаково, а именно в следующих местах:

1. В письмах заказчику.
2. В истории заказов заказчика.
3. В списках заказов бэк-офиса, чтобы reference был равным номеру заказа, а не в виде набора букв.
4. В PDF счетов-фактур.

В качестве номера заказа мне надо везде подставлять ID заказа из таблицы Prestashop.

Какая ситуация сейчас?


1. В письмах заказчику. Вопрос решен как подсказал здесь Виталий. Поменял в PaymentModule.php строку '{order_name}' => sprintf("#%06d", (int)($order->id)) на '{order_name}' => $order->getUniqReference()

и в письме теперь везде номер заказа = ID заказа. Все отлично, только хотелось бы поменять символ #  в перед номером заказа на №.  Это править в шаблоне письма или еще где-то.


2. В истории заказов заказчика (в аккаунте). Как выводить ID заказа вместо случайного набора букв или цифр?

3. Тот же самый вопрос, что и в п.2. Как сделать reference равным ID заказа?

4. В PDF счетов-фактур. Здесь вобще непонятное мне творится. По логике номер счета фактуры должен совпадать с номером заказа. Но у меня почему-то номер счета-фактуры меньше на 1, чем номер заказа. Пишет, например, "Номер счета-фактуры 000005", а ниже "Заказ № 000006".

Как сделать, чтобы номер счета-фактуры всегда был равен номеру заказа (т.е. в итоге ID Заказа).

Пожалуйста, подскажите, какие файлы и как править.



Сделал как Вы посоветовали
02 Февраль 2013, 03:47:54
Ответ #18
  • Фрилансер
  • *
  • Сообщений: 181
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Да, забыл добавить,

5. Номер, штампуемый в имени PDF-файла генерируемого счета тоже должен быть равен ID, т.е. типа invoice000006.pdf

Сейчас вроде формируется правильно после изменений по п.1. Просто хотел уточнить достаточно ли этой правки и не надо ли еще где-то что-то править.
03 Февраль 2013, 00:37:16
Ответ #19
  • Фрилансер
  • *
  • Сообщений: 181
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Добавлю еще, что в последнем посте где я написал "Сейчас вроде формирует правильно" я имел в виду только штамповку номера заказа в имени PDF файла. Что касается пунктов 2-4 они под вопросом. Жду помощи специалистов.
03 Февраль 2013, 14:32:25
Ответ #20
  • Администратор
  • Ветеран
  • *****
  • Сообщений: 102503
  • Репутация: +34219/-0
    • Просмотр профиля
В стандарной сборке Prestashop номер заказа одинаков в :
- В письмах заказчику.
- В истории заказов заказчика.
- В списках заказов бэк-офиса (reference не может быть равным номеру заказа, реф.номер используется для возможности разделять заказы, если у вас несколько магазинов на одном домене)
- В PDF счетов-фактур.
Изменить номер счет-фактуры можно в :
Панель администратора > Заказы > Счет-фактуры > Настройки счет-фактуры
Если реф. номер не нужен, то удалите его из шаблонов или используйте переменную:
{order_name}' => sprintf("#%06d", (int)($order->id))Если не совпадают номера заказов и счет-фактур, значит не правильно удаляли заказы. Нужно проверить и исправить данные в базе данных, в таблице ps_order_invoice.
Цитировать
Номер, штампуемый в имени PDF-файла генерируемого счета тоже должен быть равен ID, т.е. типа invoice000006.pdf
Имя файла можно изменить в классе PDFCore (PDF.php)
public $filename;
03 Февраль 2013, 22:58:04
Ответ #21
  • Новичок
  • *
  • Сообщений: 11
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
    • доставка "Девятый вкус"
Подскажите, а как просто удалить этот страшный буквенный номер заказа из счета? (где он прописывается?)
04 Февраль 2013, 13:12:40
Ответ #22
  • Администратор
  • Ветеран
  • *****
  • Сообщений: 102503
  • Репутация: +34219/-0
    • Просмотр профиля
Цитата: Виктор Демидов
Изменение РЕФ.НОМЕРА (reference) счет-фактуры, заменить буквы на цифры:
Нужно изменить в классе Order метод generateReference().
/**
 * Gennerate a unique reference for orders generated with the same cart id
 * This references, is usefull for check payment
 *
 * @return String
 */
public static function generateReference()
{
return strtoupper(Tools::passwdGen(9, 'NUMERIC'));
}
05 Февраль 2013, 22:48:46
Ответ #23
  • Фрилансер
  • *
  • Сообщений: 181
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Цитата: bolove
Подскажите, а как просто удалить этот страшный буквенный номер заказа из счета? (где он прописывается?)
Цитата: Виктор Демидов
Изменение РЕФ.НОМЕРА (reference) счет-фактуры, заменить буквы на цифры:
Нужно изменить в классе Order метод generateReference().

У меня ощущение. что мы ходим по кругу. В России большинство привыкли получать копии заказов и документы, ссылающиеся на него примерно так:

Заказ № 123456 от 04-02-2013.

Могут быть префиксы, суффиксы, но все же есть порядковый номер заказа. И он должен идти по нарастающей.
Как заменить буквенный номер на число Виктор подсказал. НО! Номер заказа при этом  генерируется произвольно, а не по порядку номеров.
Т.е., сначала у заказчикам может быть в кабинете заказ № 75670 от 04-02-2013, а следующий заказ, например,  № 12712 от 05-02-2013, а потом через полчаса если оформить уже номер 90456. Полная ерунда получается!

Виктор, вот я захожу в свой кабинет тестового заказчика в Prestashop 1.5.3.1 и вижу только референс своего заказа, никакого порядкового номера не вижу. Есть одна колонка "Список заказов, оформленных Вами с момента регистрации в магазине" - там только абракадабра референса типа VWRYLCHLL. Ну будет там какое-то число, произвольно сгенерированное и что это решит? Заказчик смотрит на эти цифры и видит нечто непонятное: первый заказ, скажем с номером 75670, второй - с номером 12712, третий с 90456... И подумает: "Ну и бардак в этом магазине творится!".

В письмах заказчику тоже используется референс "Ваш заказ № VWRYLCHLL - Статус: Заказ обрабатывается". Мы обрабатываем Ваш заказ № VWRYLCHLL, размещенный Вами на сайте XXXXXX.

Как все же:

1. В кабинете заказчика заменить в колонке "Список заказов, оформленных Вами с момента регистрации в магазине" референс на ID его заказа.
2. В письмах заказчику заменить референс на ID его заказа.

Тогда вроде все встанет на свои места.

Цитата: Виктор Демидов
Изменить номер счет-фактуры можно в :
Панель администратора > Заказы > Счет-фактуры > Настройки счет-фактуры
Если реф. номер не нужен, то удалите его из шаблонов или используйте переменную:
{order_name}' => sprintf("#%06d", (int)($order->id))

Этим можно заменить референс в шаблонах писем на ID Заказа?

Какой файл надо править для счета-фактуры в 1.5.3.1?

И все же если по Вашему рецепту сделать, чтобы в референс вместо букв показывались цифры, как сделать, чтобы он все же содержал ID заказа?
Если референс не может быть равен ID заказа, чтобы различать разные заказы из разных магазинов на одном домене,  как его генерировать в виде "IDЗаказа-IDмагазина". Тогда было бы очень легко ориентироваться и служба поддержки тоже легко могла работать с клиентами- "Скажите Ваш номер заказа первые 5 цифр, например".

Подскажите пожалуйста, Виктор, в каких файлах и что править для этого в Prestashop 1.5.3.1. Тогда все проблемы были бы решения. И кстати по этому принципу, как исправить номера счетов фактур на типа IDЗаказа-IDмагазина

В общем задача фактически свелась к  глобальной замене везде референса на числовой набор IDЗаказа-IDмагазина.

Жду с нетерпением ответа, а то застрял на этом моменте.
06 Февраль 2013, 16:24:22
Ответ #24
  • Администратор
  • Ветеран
  • *****
  • Сообщений: 102503
  • Репутация: +34219/-0
    • Просмотр профиля
В админке, в списке заказов показывает :
Цитировать
ИД - это номер заказа, в высылаемой счет-фактуре к номеру будет добавлены 0 (до 6 знаков по умолчанию).
Источник (не точный перевод) - это регистрационный номер, для ссылок на заказ.
Номера заказов показывает по порядку, т.е. так, как вам нужно
"Заказ № 123456 от 04-02-2013"
Как изменить номер "№ 123456" - тоже уже написано:
Цитировать
Изменение НОМЕРА счет-фактуры
Панель администратора > Заказы > Счет-фактуры > Настройки счет-фактуры
Префикс счет-фактур: Приставка, используемая для имени счета-фактуры (например. FA00001)
В кабинете пользователя, в истории заказов показана таблица. В стандартном варианте, номера заказа нет. Первая колонка - это ссылка на заказ, т.е. "XKBKNABJK" уникальный реф.номер.
Цитировать
1. В кабинете заказчика заменить в колонке "Список заказов, оформленных Вами с момента регистрации в магазине" референс на ID его заказа.
Хотите добавить еще одну колонку с номером счет-фактуры - "№ 123456" или удалить, изменить показ заказов, измените шаблон history.tpl

Цитировать
2. В письмах заказчику заменить референс на ID его заказа.
Измените метод класса PaymentModul:
Цитировать
Номер заказа в письмах устанавливается в классе PaymentModule.
Для того чтобы использовать ид заказа, а не рег.номер, нужно заменить
Код: [Выделить]
'{order_name}' => sprintf("#%06d", (int)($order->id))
или добавьте новую переменную в шаблоны писем
{order_id}хотите использовать номер счет-фактур
$order_invoice->id_orderи т.д. способов много.
Цитировать
В письмах заказчику тоже используется референс "Ваш заказ № VWRYLCHLL - Статус: Заказ обрабатывается". Мы обрабатываем Ваш заказ № VWRYLCHLL, размещенный Вами на сайте XXXXXX.
Это не правильно составлен шаблон письма. Тескт на поддверждение должен быть примерно такой (каждый сам под себя регулирует):
Цитировать
Здравствуйте, ФИО, благодарим вас за заказ!
Детали заказа
        Заказ: #000020 добавлен 15-11-2012 16:09:01
        Способ оплаты: Бесплатный заказ
        Итого: 0 р.
        Скидки: 0 р.
        Доставка: 0 р.
        Подарочная упаковка 0 р.
        Итого к оплате: 0 р.
Доставка
        Способ доставки:
        Адрес доставки:

Ссылка для просмотра заказа - VWRYLCHLL  //вот здесь и показан реф.номер
09 Февраль 2013, 03:07:08
Ответ #25
  • Фрилансер
  • *
  • Сообщений: 181
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо, Виктор - сегодня проверю, как все пройдет на 1.5.3.1 и отпишусь.
11 Февраль 2013, 20:29:25
Ответ #26
  • Фрилансер
  • *
  • Сообщений: 181
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Уважаемый Виктор! Два вопроса, чтобы добить тему по Prestashop 1.5.3.1.

1. Как сделать, чтобы в Истории заказов в Личном кабинета формат выводимого № заказа было шестизначное число с ведущими нулями, а не просто порядковое.

Я настроил, чтобы в Истории заказа вместо Reference показывался ID Заказа по Вашим рецептам, но у меня показывается номер заказа как 10. А я хотел бы как 000010 (см. аттачмент 1). В каком файле и что править сделать?

2. Как сделать, чтобы в Форме контакта при выборе заказа показывался опять-таки ID заказа и дата размещения, вместо Reference и даты размещения. Я подозреваю, что надо править contact-form.tpl, но значений не хватает какие строки на что менять. Сейчас у меня выглядит как на втором приложенном файле типа: "VWRYLCHLL 2013-01-28", а хотелось бы типа  "000010 от 2013-01-28"
12 Февраль 2013, 12:40:36
Ответ #27
  • Администратор
  • Ветеран
  • *****
  • Сообщений: 102503
  • Репутация: +34219/-0
    • Просмотр профиля
Задать формат 6 значного числа  :
Цитировать
sprintf("#%06d", (int)(переменная))
Можно добавить новую переменную в классе Order или добавить метод в контроллер HistoryController.php где сформировать новый формат переменной.
Номер заказа в шаблонах :
{$order.id_order|intval}Номер счет-фактуры в шаблонах:
{$order.invoice_number|intval}Лучше использовать не номер заказа, а номер счет-фактуры.
Цитировать
Я подозреваю, что надо править contact-form.tpl
Если для формы контактов в кабинете пользователя, то шаблон order-detail.tpl.
12 Февраль 2013, 16:49:26
Ответ #28
  • Фрилансер
  • *
  • Сообщений: 181
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо за ответы, Виктор! На основе Ваших советов я написал краткий мануал, что и где менять в Prestashop 1.5.3.1, чтобы заменить везде Reference на ID заказа. Прилагаю файл.

Там есть непонятные моменты, для которых нужно знание PHP. Я нашел в некоторых строках переменные {order_name}, которые можно было бы поменять на sprintf("%06d", (int)($order->id)), но я видимых изменений не обнаружил. Потому нужна Ваша консультация для того, чтобы понять, надо ли там делать замену и где они проявятся. Тогда мануал получится полным.

Есть еще 3 вопроса:

1. Вы где -то писали, кажется, что Reference нужен где-то для того, чтобы различить заказы из разных магазинов на одном домене.

1.1. Не будет ли проблем, если везде вместо Reference подставлять ID заказа с мультимагазинами?
1.2. Если будет, то является ли хорошим решением различение заказов из разных магазинов подстановкой в письма, истории заказов и счета-фактуры вместо IDзаказа IDзаказа_ID магазина. Т.е. номер заказа будет выглядеть примерно так 000012_004
1.3. Как в этом случае должна выглядеть строка sprintf("%06d", (int)($order->id)) ?

2. Нерешенными остались пока вопросы с номерами заказов в админке.

2.1. При просмотре списка заказов их ID показывается как в таблицах Prestashop (т.е., 1, 2, 3...). См. admin1.jpg. Как их привести к такому же виду как в письмах заказчику (т.е. шестизначное число - 000001, 000002 и т.д.). Какой файл править?

2.2. При формировании счетов из админки есть явный глюк. Не знаю это глюк Prestashop или связано с изменением нумерации. Пожалуйста, подскажите у Вас также? Проблема в следующем.

Если заказчик просматривает свои счета-фактуры из Истории заказов, то все идет нормально. Например, заказ 000003. Формируется файл счета invoice000003.pdf. В нем тоже все правильно: номер-счета фактуры 000003, номер заказа тоже 000003. См. invoice_from_history.jpg

Если же формировать счет для того же заказа 000003 из админки, то выходит какая-то явно ерунда.

Во-первых, имя PDF-файла счета-фактуры при формировании выдается как invoice000000.pdf

Во-вторых, в счете-фактуре, тоже все неправильно (см. invoice_from_admin.jpg) - формируется он для другого заказа (000001), другого заказчика, а номер счета-фактуры  уже отличается от номера заказа.

Где искать причину?

3. Чуть не по теме. Но чтобы задавать Вам меньше вопросов. Не подскажете, как с помощью Firebug понять, какой файл Prestashop используется при выводе тех или иных данных в админке или Фронт-офисе? Например я щелкаю на кнопке формирования счета-фактуре в админке - я могу с помощью этого плагина понять какие-файлы Prestashop задействуются при этом?




12 Февраль 2013, 20:53:27
Ответ #29
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Цитировать
Не подскажете, как с помощью Firebug понять, какой файл Prestashop используется при выводе тех или иных данных в админке или Фронт-офисе? Например я щелкаю на кнопке формирования счета-фактуре в админке - я могу с помощью этого плагина понять какие-файлы Prestashop задействуются при этом?
Смотреть код кнопки или ссылки. Например, на кнопке просмотра счета видно код в  Firebug
<a target="_blank"  href="index.php?controller=AdminPdf
                                                            &token=...
                                                            &submitAction=generateInvoicePDF
                                                            &id_order=..."
class="button">
    <img alt="Просмотр счета" src="../img/admin/charged_ok.gif"> Просмотр счета
</a>
Значит файл контроллера:
/controllers/admin/AdminPdfController.php в нем описан класс AdminPdfControllerCore и функция processGenerateInvoicePdf(), которая будет обрабатывать запрос.