Как оказалось, такая тема уже поднималась -
http://prestadev.ru/forum/tema-3862-0.html, но рецепта решения так и не было. Ну хоть на мысль натолкнуло.
Я тоже решил проблему не лучшим образом, но .... хоть и через задницу, как и все в этом кривом движке, все же победил.
Суть в том, что хотя в Список заказов вели кнопку Удалить, но сделали это криво.
За заказы и выписку счетов отвечают 2 таблицы БД ps_order и ps_order_detail. Так вот, как и каждый нормальный разработчик, при отладке мы делаем ряд тестовых заказов в магазине и меняем их статусы и т.п.
Когда приходит время сдачи магазина заказчику и старт проекта, есно мы удаляем тестовые заказы и наивно думаем, что терь все чисто и красиво.
Ага... ща... При удалении заказов из админки очищается только таблица ps_order, вернее тупо удаляются соответствующие записи из нее, при этом значение инкрементных полей id_order никто и не думал пересчитывать. Ясен пень - геморрой.
Теперь откуда же берутся лишние товары? а дело в том, что существует еще одна табличка ps_order_detail в которой хранятся данные о сделанных заказах, вот именно она и причина мусора. Когда мы тестим заказы и удаляем их в этой табличке накапливаются записи и в
поле id_order получаются дубляжи номеров заказов с их данными.
Теперь при формировании счета в него вставляются все значения, в том числе и ранее удаленные из таблицы id_order.
Лечение - очистить ручками обе таблицы ps_order и ps_order_detail - тупо сносим все записи. Таким образом от мусора избавимся.
Ясен пень это не решение проблемы - ведь о кнопке Удалить товар можно забыть, иначе в процессе пользования магазином наступим на те же грабли.
Кроме того, Новый заказ получит номер и счет следующий по счету, после удаленных, т.к. не сброшены значения инкрементных полей.
Чтобы нумерация Заказов и Счетов началась с 1 нужно установить в 1 значение инкремента полей: в табл. ps_order поле id_order.
Чтобы было понятнее прилагаю скрин…
Если важно чтобы и Счета начинались с 1, тогда туже операцию проводим с таблицей ps_order_detail. В ней редактируем инкремент поля id_order_detail.
После этих манипуляций глюки с мусором и нумерацией уходят, теперь все девственно чисто и начинаем новую жизнь с нуля.
Но это еще не все
Нужно еще почистить таблицу отвечающую за историю статусов заказов, иначе они потянутся из тестовых заказов в новые.
Для этотого все тоже самое – (очистку таблицы и сброс инкремента) проводим для таблицы ps_order_history и поля id_order_history
Друзья, забудьте о кнопке Удалить Заказ, и не показывайте ее никому, заказчику в особенности – потом греха не оберетесь.
А еще лучше забыть об этом двиге, по крайней мере до того момента как выйдет нормальная версия. За 3 месяца отладки магазина пришлось перекопать 90% кода, постоянно вылазят тараканы изо всех щелей. А уж что нить поправить или ввести свои дополнения – начинающему программеру не под силу.
Цитата из фильма – "Будь проклят тот день, когда я сел за баранку этого пылесоса!» (читать – ...когда я поставил Престу на хост)
Сообщение отредактировано asderkdw 22-07-2012 07:16 ...