Випуск номера замовлення Magento


9

У мене є дивна проблема з номером замовлення в Магенто.

В останній час, коли один замовлення було розміщено на моєму сайті номер замовлення прийшов був 100000350, В ідеалі це повинно було бути, 100000370як мої попередні порядкові номери були 100000369і 100000367. Я скріпив скріншот нижче для цього

Скріншот номера замовлення

Більше того, я перевірив наявність журналів помилок, але не знайшов жодного запису. Ми використовуємо SagePay і PayPal як шлюз для платежів.

Хтось може мене на цьому направляти?


Я чітко бачу, що ви встановите будь-який модуль, пов’язаний із замовленням, це виникне проблема,
Кейул Шах,

Немає жодного модуля, пов’язаного із замовленням. Єдиним стороннім модулем, який ми використовуємо, є Ebizmarts_SagePay, Mass_Product_Relater, TBT_Enhancegrid та Sphinix Search
Dexter

1
Немає великого питання, хтось із обліковим записом клієнта майже виконав замовлення до пункту, який він подав для оплати, присвоїв йому номер замовлення на продаж та потім покинув кошик на певний час. Відбувається весь час ... Ви отримали замовлення, поздоровлення, виконане замовлення замість залишення.
Лабораторії Фіаско

Думаю, у вас не виникло мого питання
Dexter

1
@huzefam. Будь ласка, візьміть це з командою дизайнерів Magento або створіть свій власний стовпчик з автоматичним номером, який ви відключите для ERP на завершеному Magento SO. Так, я розумію з аудиторської точки зору, якщо відсутні номери рахунків-фактур, є придурливі. Мадженто, схоже, зайняв позицію, що не всі замовлення є дійсними, тому відсутні номера SO не є великою справою. Я також розумію, що деякі системи бухгалтерського обліку, державні юрисдикції так само ставляться до Замовлень з продажу і очікують, що вони матимуть аудиторський слід, який показує недійсні замовлення у повній послідовній послідовності.
Лабораторії Фіаско

Відповіді:


28

Перший раз, коли я вийшов із послідовного номера, ми здивувались і злякалися, поки я не з'ясував, що відбувається. Це стосується того, як Magento розподіляє номери замовлень на продаж.

Це цілком нормально, щоб така послідовність була такою, щоб вона була попередньою поточною виділеною кількістю та місячною або більше. Секрет у ньому полягає в тому, що клієнт, який увійшов до системи, не виконав замовлення після певного критичного етапу, повернувся, увійшов у систему і вирішив нарешті придбати.

Цитата з виділеним номером замовлення на продаж використовує це число для номера замовлення на продаж.

Тепер для пояснення.

Процес замовлення Magento створює котирування при першому додаванні чого-небудь у кошик.

  • Для гостьових клієнтів ця пропозиція триває до тих пір, поки їх сеанс не закінчився, в який момент вона існує в базі даних, але не підлягає відновленню.
  • Коли зареєстрований клієнт входить у систему, котирування кошика присвоює його ідентифікатор клієнта, щоб кошик тривав до тих пір, поки клієнт не випорожнить його та його зможе отримати зареєстрований клієнт, увійшовши до свого облікового запису.

На даний момент пропозиція є лише потенційним замовленням на продаж . У нього немає присвоєного номера, оскільки замовник не зобов’язався платити за нього.

Коли клієнт натискає кнопку « Продовжити», щоб здійснити замовлення, він:

  • або увійти в попередній до запуску кошика
  • або якщо ви не ввійшли в систему, запитуйте, чи хочуть вони зареєструватися або вийти як гість.

Далі важливий біт: Клієнти, які вирішили зареєструватися у кошику, розглядаються як гості-клієнти до завершення замовлення, і вони потрапляють на сторінку успіху, в цей час створюється їхній рахунок і вони входять у систему. Цитата Залишається кошторисом гостя з клієнтом із втратою кошика на час сеансу, якщо замовлення не завершено та відображається сторінка успіху.

З замовленням на кредитну карту відбувається наступне, якщо натиснути кнопку Замовлення на місце .

  • Інформація про кредитну картку, інформація про платіжну адресу, підсумки кошика та інформація про замовлення збираються
  • Цій котировці призначений номер замовлення на продаж ( sales_flat_quoteтаблиця в reserved_order_idстовпці)
  • Пакет даних подається на шлюз кредитної картки для надання дозволу / перерахування коштів на оплату замовлення.
  • Процесор кредитної картки повертається назад:
    • або авторизація / захоплення коштів з відповідною інформацією про транзакції, яка підлягає запису
    • або відхилення платежу з відповідною інформацією щодо відмови в авторизації / захопі.
  • Після успішного авторизації / захоплення ціна перетворюється на Замовлення з продажу, і якщо це регістр кошика, створюється обліковий запис клієнта.

Якщо транзакція кредитної картки для будь-якого клієнта відхилена шлюзом платежів за допомогою кредитної картки, а наступний клієнт розміщує успішне замовлення , буде пропущено послідовність номерів замовлення на продаж через відхилення платежу Замовлення на продаж присвоєно зарезервований номер замовлення на продаж а наступному успішному замовленню з продажу присвоєно наступний доступний номер.

Для гостьових візків (замовлення гостей та невдалий реєстр у клієнтах-кошиках), які перевищують час очікування сеансу, цей зарезервований номер замовлення на продаж втрачається, коли сеанс закінчується, залишаючи прогалини в послідовності продажів.

Для клієнтів, які ввійшли в систему, перш ніж натиснути кнопку « Продовжити» , цитаті присвоюється ідентифікатор клієнта, тому якщо вони спробують зробити замовлення і виявлять, що він відхилений, вони можуть повернутися, увійти, знайти кошик, який все ще містить вміст, і розмістити замовлення, іноді набагато пізніше (найдовше на сьогоднішній день було чотири місяці). У котируванні буде використано призначений зарезервований номер замовлення на продаж, що призведе до того , що номер послідовного замовлення не відображається на дисплеї управління замовленнями на продаж.


З метою перевірки я зробив вигляд, що застряг у касі, не вибравши спосіб оплати та нарешті закривши браузер (на комп’ютері, який відкрив сайт + спочатку замовив замовлення). а тим часом закінчив друге замовлення комп'ютерів (який повинен отримати наступний приріст ідентифікатора). Результат полягає в тому, що він не перестрибує число. Якби це працювало таким чином, він додав би невикористаний ідентифікатор між замовленням 10 та замовленням 11, чого він не зробив. Відповідно до вашої інформації, я намагався перевірити і зробити саме те, що ви вказуєте, але це не дає результату.
Сіва

Натомість, якщо клієнт не працює в шлюзі платежів, він відображатиметься як очікуючий платіж або скасовується, а якщо замовлення не виконано в останній частині каси, воно взагалі не відображатиметься (і просто продовжуйте з правильним ідентифікатором у послідовність). Тож зараз я з цим плутаюсь. Будь ласка, допоможіть мені зрозуміти, чому номер замовлення пропускається випадковим чином. Спасибі
Сіва

Велике пояснення.
Вулфак

2

Я зіткнувся з тим же питанням, але це було лише тоді, коли сервер потрапив з величезною кількістю навантаження. Ця проблема виникає тому, що db переходить у стан блокування, перетворюючи цитату в порядок. Під час подальшої перевірки я з’ясував, що проблема полягає в тому, що вона намагалася записати в таблицю sales_flat_order_grid в рамках транзакції відразу після вставки в таблицю sales_flat_order. З паралельними запитами це спричинило блокування зіткнень. Справжнє рішення полягає в тому, щоб перемістити речі sales_flat_order_grid з угоди.

Посилання допомогло мені зрозуміти проблему

Патч вирішив проблему для мене.

Вам потрібно видалити функцію _afterSave з Mage_Sales_Model_Ab абстракт та додати

public function afterCommitCallback(){
    if (!$this->getForceUpdateGridRecords()) {
         $this->_getResource()->updateGridRecords($this->getId());
     }
    parent::afterCommitCallback();
}

Повідомте мене, чи вирішує це проблема для вас.


Хтось спробував цей метод, як сказав Шайлі ?
Сіва

0

Я не впевнений, але це може вирішити вашу проблему:

Наскільки я думаю, щось може заважало вашому eav_entity_storeстолу. Він містить інформацію про наступний приріст_id, тобто order_id для використання. Можливо, якийсь модуль або код у вашій системі magento може змінити його.

Відкрийте цю таблицю та оновіть колонку increment_last_id своїм останнім ідентифікатором замовлення. Будьте обережні, він містить приріст ідентифікаторів інших , а також такі , як рахунки - фактури, відвантаження і т.д. Для того, щоб бути впевненим, просто перейдіть на eav_entity_typesстіл і подивитися , що це entity_type_idза sales/order(колонка entity_model). У моєму магенто його 5. Отже, перейдіть до eav_entity_storeтаблиці та просто оновіть increment_id для рядка, який entity_type_idстановить 5. Ви можете безпосередньо оновити його за допомогою phpmyadmin, або ви можете запускати запити як,

update eav_entity_store set increment_last_id = 'your_last_order_id' where entity_type_id = 5; 

Будь ласка, зверніть увагу, що 5 - це_посібник_id в моєму магенто для замовлення

Причин для вашої проблеми може бути багато, але я думаю, що це може вирішити вашу проблему.


Дякую .. але вже перевірили таблицю, і вона має правильний ідентифікатор приросту
Dexter

який ваш максимальний (не останній) ідентифікатор замовлення в адміністраторі продажів -> замовлення? Покладемо , що значення в таблиці I said..place замовлення випробування і перевірка ..
Прадіпа
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.